ホームページ  >  記事  >  データベース  >  JDBC -- データベース管理システム

JDBC -- データベース管理システム

黄舟
黄舟オリジナル
2017-02-11 11:12:012352ブラウズ

1-JDBC の概要

序文: データの永続性

永続性: 後で使用できるように、電源を切ったストレージ デバイスにデータを保存します。ほとんどの場合、特にエンタープライズ レベルのアプリケーションの場合、データの永続化とは、メモリ内のデータをハードディスクに保存して「固定化」することを意味し、永続化プロセスは主にさまざまなリレーショナル データベースを通じて実行されます。
永続性の主な用途は、データをリレーショナル データベースのメモリに保存することです。もちろん、ディスク ファイルや XML データ ファイルに保存することもできます。

Java のデータ ストレージ テクノロジ

Java では、データベース アクセス テクノロジは次のカテゴリに分類できます:

JDBC データベースへの直接アクセス
JDO テクノロジ
サードパーティ O/R ツール、などHibernate、ibatis などのように

JDBC は、JDO、Hibernate などのデータベースへの Java アクセスの基礎であり、JDBC をより適切にカプセル化しています。

JDBC の基本

JDBC (Java Database Connectivity) は、特定のデータベース管理システムから独立した一般的な SQL データベースのアクセスと操作のためのパブリック インターフェイス (API のセット) であり、データベースへのアクセスに使用される標準 Java を定義します。クラス ライブラリ (java.sql、javax.sql) このクラス ライブラリを使用すると、標準的な方法でデータベース リソースに簡単にアクセスでき、開発者は詳細な問題から保護されます。
JDBC の目標は、Java プログラマーが JDBC を使用して、JDBC ドライバーを提供するデータベース システムに接続できるようにすることです。これにより、プログラマーは特定のデータベース システムの特性についてあまりにも多くの知識を持つ必要がなくなり、作業が大幅に簡素化されます。そして開発プロセスをスピードアップします。

JDBC アーキテクチャ

JDBC インターフェイス (API) には 2 つのレベルが含まれます:

アプリケーション指向 API: Java API、抽象インターフェイス、アプリケーション開発者によって使用されます (データベースへの接続、SQL ステートメントの実行、結果の取得) 。
データベース指向 API: 開発者がデータベース ドライバーを開発するための Java ドライバー API。

JDBC は、データベース操作のために Sun が提供する一連のインターフェイスです。Java プログラマは、この一連のインターフェイスに対してプログラミングするだけで済みます。データベース ベンダーが異なれば、このインターフェイス セットに対して異なる実装を提供する必要があります。さまざまな実装の集合が、さまざまなデータベースのドライバーとなります。 ——インターフェース指向プログラミング

JDBCドライバーの分類。

JDBC ドライバー: JDBC 仕様に従ってさまざまなデータベース ベンダーによって作成された JDBC 実装クラスのクラス ライブラリ
JDBC ドライバーには合計 4 つのタイプがあります:

最初のタイプ: JDBC-ODBC ブリッジ。 。
カテゴリー 2: 一部のローカル API と一部の Java ドライバー。
3 番目のカテゴリ: JDBC ネットワーク Pure Java ドライバー。
カテゴリ 4: ローカル プロトコル用の Pure Java ドライバー。

3 番目と 4 番目のカテゴリーは純粋な Java ドライバーであるため、Java 開発者にとっては、パフォーマンス、移植性、機能性などの点で利点があります。

カテゴリ 1: ODBC

データベースへの早期アクセスは、データベース ベンダーが提供する独自の API の呼び出しに基づいていました。 Windows プラットフォーム下で統一されたアクセス方法を提供するために、Microsoft は ODBC (Open Database Connectivity) を立ち上げ、ユーザーはプログラム内で ODBC API を呼び出すだけでよく、ODBC ドライバーがその呼び出しを変換します。 ODBC ベースのアプリケーションは、データベース操作に DBMS (データベース マネージャー システム) に依存せず、すべてのデータベース操作は対応する DBMS の ODBC ドライバーによって実行されます。つまり、FoxProでもAccessでも , MYSQL または Oracle データベースには ODBC API でアクセスできます。 ODBC の最大の利点は、すべてのデータベースを統一的に扱えることであることがわかります。
JDBC-ODBC ブリッジ
JDBC-ODBC ブリッジ自体もドライバーであり、このドライバーを使用すると、JDBC-API を使用して ODBC 経由でデータベースにアクセスできます。このメカニズムは実際に、標準の JDBC 呼び出しを対応する ODBC 呼び出しに変換し、ODBC を通じてデータベースにアクセスします。これには複数の呼び出し層が必要となるため、JDK では JDBC-ODBC ブリッジを使用してデータベースにアクセスするのは非効率的です。 ODBC ブリッジの実装クラス (sun.jdbc.odbc.JdbcOdbcDriver) が提供されます。

2 番目のカテゴリ: 一部ローカル API と一部 Java ドライバー

このタイプの JDBC ドライバーは Java で書かれており、このタイプの JDBC ドライバーを通じてデータベースにアクセスする必要性が減ります。 ODBC 呼び出しリンクにより、データベース アクセスの効率が向上します。このように、特定のメーカーのローカル JDBC ドライバーとローカル API を顧客のマシンにインストールする必要があります。

3 番目のカテゴリ: JDBC ネットワーク Pure Java ドライバー

このドライバーは、ミドルウェア アプリケーション サーバーを使用してデータベースにアクセスします。アプリケーション サーバーは複数のデータベースへのゲートウェイとして機能し、クライアントはそれを介してさまざまなデータベース サーバーに接続できます。
通常、アプリケーション サーバーには独自のネットワーク プロトコルがあり、Java ユーザー プログラムは JDBC ドライバーを介してアプリケーション サーバーに JDBC 呼び出しを送信し、アプリケーション サーバーはローカル プログラム ドライバーを使用してデータベースにアクセスし、リクエストを完了します。

カテゴリ 4: ネイティブ プロトコル用の Pure Java ドライバー

ほとんどのデータベース ベンダーは、クライアント プログラムがネットワーク経由でデータベースと直接通信できるようにするネットワーク プロトコルをすでにサポートしています。
このタイプのドライバーは、データベースと確立されたソケット接続を通じて、メーカー固有のネットワーク プロトコルを使用して、JDBC 呼び出しを JDBC API に直接接続されたネットワーク呼び出しに変換します。

JDBC API は、アプリケーションがデータベースに接続し、SQL ステートメントを実行し、返された結果を取得できるようにする一連のインターフェイスです。


2-データベース接続の取得

ドライバーインターフェース

java.sql.Driverインターフェースは、すべてのJDBCドライバーが実装する必要があるインターフェースです。このインターフェイスはデータベース ベンダーによって提供され、プログラム内で Driver インターフェイスを実装するクラスに直接アクセスする必要はありません。代わりに、ドライバー マネージャー クラス (java.sql.DriverManager) がこれらを呼び出します。実装。

Oracle ドライバー: oracle.jdbc.driver.OracleDriver
mySql ドライバー: com.mysql.jdbc.Driver

JDBC ドライバーのロードと登録

方法 1: JDBC ドライブの呼び出しに必要なものをロードするのClass クラスの静的メソッド forName() を呼び出し、ロードする JDBC ドライバーのクラス名を渡します

Class.forName("com.mysql.jdbc.Driver");

メソッド 2: DriverManager class ドライバーの管理を担当するドライバーマネージャークラスです

DriverManager.registerDriver(com.mysql.jdbc.Driver);

通常、DriverManager の registerDriver() メソッドを明示的に呼び出す必要はありません。 Driver インターフェイスのドライバー クラスには静的コード ブロックが含まれているため、この静的コード ブロック内で DriverManager.registerDriver() メソッドが呼び出され、それ自体のインスタンスを登録します。

接続を確立する

DriverManager クラスの getConnection() メソッドを呼び出して、データベースへの接続を確立できます。
ユーザーは、「属性名 = 属性値」を使用してデータベースにパスワードを伝えることができます。
JDBC URL は、登録されたドライバーを識別するために使用され、データベース接続を作成するためにこの URL を通じて適切なドライバーを選択します。
JDBC URL 標準は、コロンで区切られた 3 つの部分で構成されます。
jdbc:subprotocol:subname
protocol: JDBC URL のプロトコルは常に jdbc です。
サブプロトコル: サブプロトコルはデータベースドライバーを識別するために使用されます。
サブネーム: データベースを識別する方法。サブ名は、さまざまなサブプロトコルに応じて変更できます。サブ名を使用する目的は、データベースを見つけるための十分な情報を提供することです。ホスト名 (サーバーの IP アドレスに対応)、ポート番号、データベース名が含まれます。

一般的に使用されるいくつかのデータベースの JDBC URL

jdbc:mysql://localhost:3306/test
Protocol sub-protocol Sub-name
Oracle データベース接続の場合、次の形式が使用されます:
jdbc: oracle:thin:@localhost:1521:atguigu
SQLServer データベース接続の場合は、次の形式を使用します:
jdbc:microsoft:sqlserver//localhost:1433; DatabaseName=sid
MYSQL データベースの場合接続には、次の形式を使用します。
jdbc:mysql://localhost:3306/atguigu

Statement

接続オブジェクト Connection が取得されると、SQL は実行オブジェクトから取得する必要があります。 SQL を実行するための Connection オブジェクト。

Connection connection = getConnection();
Statement state = connection.createStatement();
int n = state.executeUpdate(“insert,update,delete…”);

ここで、n はテーブルの追加、削除、または変更によって影響を受けるレコードの数です。クエリが実行されると、ResultSet 結果セット オブジェクトが返されます。

SQL インジェクション。攻撃

SQL インジェクションは、一部のシステムではユーザー入力データを完全にチェックせず、不正な SQL ステートメント セグメントまたはコマンドをユーザー入力データに挿入します (例: SELECT user,password FROM user_table WHERE user='a' OR 1) = ' AND パスワード = ' OR '1' = '1')、これによりシステムの SQL エンジンを使用して悪意のある動作を完了します。Java の場合、SQL インジェクションを防ぐには、PreparedStatement (Statement から拡張) を使用するだけです。 Statement を置き換えるだけです。



3-PreparedStatementを使用する

データ型変換表




PreparedStatement() メソッドを呼び出すことで PreparedStatement オブジェクトを取得できますConnection オブジェクトの。
PreparedStatement インターフェイスは、プリコンパイルされた SQL ステートメントを表す Statement のサブインターフェイスです。
PreparedStatement オブジェクトによって表される SQL ステートメント内のパラメーターは、疑問符 (?) で表されます。これらのパラメーターを設定するには、PreparedStatement オブジェクトの setXxx() メソッドを呼び出します。setXxx() メソッドには 2 つのパラメーターがあります (最初のパラメーター)。設定される SQL ステートメント内のパラメーターのインデックス (1 から始まります)。2 番目は、設定される SQL ステートメント内のパラメーターの値です。
PreparedStatement と Statement
コードの可読性と保守性。
PreparedStatement はパフォーマンスを最大化できます:
DBServer はプリコンパイルされたステートメントのパフォーマンスを最適化します。プリコンパイルされたステートメントは繰り返し呼び出される可能性があるため、DBServer コンパイラによってコンパイルされた後のステートメントの実行コードがキャッシュされ、次回そのステートメントが呼び出されるとき、それが同じプリコンパイルされたステートメントである限り、コンパイルする必要はありません。パラメータが直接渡される限り、コンパイルされたステートメントは実行コード内で実行されます。
statementステートメントでは、同じ操作であってもデータ内容が異なっていても、statement全体が一致することはなく、ステートメントをキャッシュする意味がありません。実際には、通常のステートメントのコンパイルされた実行コードをキャッシュするデータベースはありません。このように、受信したステートメントは実行されるたびに 1 回コンパイルする必要があります。 (構文チェック、セマンティックチェック、バイナリコマンドへの変換、キャッシュ)。
PreparedStatementはSQLインジェクションを防ぐことができます

データベースと操作テーブルに接続する手順:

ドライバーを登録します(一度だけ実行します)

接続を確立します

SQLを実行する文の作成(PreparedStatement)

実行文

実行結果の管理(ResultSet)

リソースの解放


Connection conn = null;
		PreparedStatement st=null;
		ResultSet rs = null;
		try {       
			//获得Connection      
			//创建PreparedStatement      
			//处理查询结果ResultSet
		}catch(Exception e){
		     	e.printStackTrance();
		} finally {     
			//释放资源ResultSet,        
			// PreparedStatement ,    
			//Connection		


释放ResultSet, PreparedStatement ,Connection。
数据库连接(Connection)是非常稀有的资源,用完后必须马上释放,如果Connection不能及时正确的关闭将导致系统宕机。Connection的使用原则是尽量晚创建,尽量早的释放。



4-使用ResultSet、ResultSetMetaData操作数据表:SELECT

ORM:Object Relation Mapping
表 与 类 对应
表的一行数据 与 类的一个对象对应
表的一列 与类的一个属性对应

ResultSet

通过调用 PreparedStatement 对象的 excuteQuery() 方法创建该对象。
ResultSet 对象以逻辑表格的形式封装了执行数据库操作的结果集,ResultSet 接口由数据库厂商实现。
ResultSet 对象维护了一个指向当前数据行的游标,初始的时候,游标在第一行之前,可以通过 ResultSet 对象的 next() 方法移动到下一行。
ResultSet 接口的常用方法:

boolean next()
getString()

处理执行结果(ResultSet)
读取(查询)对应SQL的SELECT,返回查询结果

st = conn.createStatement();
String sql = "select id, name, age,birth from user";
rs = st.executeQuery(sql);
while (rs.next()) {		
	System.out.print(rs.getInt("id") + " \t ");		
	System.out.print(rs.getString("name") + " \t");		
	System.out.print(rs.getInt("age") + " \t");		
	System.out.print(rs.getDate(“birth") + " \t ");		
	System.out.println();}
}


关于Result的说明

1. 查询需要调用 Statement 的 executeQuery(sql) 方法,查询结果是一个 ResultSet 对象
2. 关于 ResultSet:代表结果集
ResultSet: 结果集. 封装了使用 JDBC 进行查询的结果. 调用 Statement 对象的 executeQuery(sql) 可以得到结果集.
ResultSet 返回的实际上就是一张数据表. 有一个指针指向数据表的第一条记录的前面.
3.可以调用 next() 方法检测下一行是否有效. 若有效该方法返回 true, 且指针下移. 相当于Iterator 对象的 hasNext() 和 next() 方法的结合体
4.当指针指向一行时, 可以通过调用 getXxx(int index) 或 getXxx(int columnName) 获取每一列的值. 
例如: getInt(1), getString("name")
5.ResultSet 当然也需要进行关闭. 

MySQL BLOB 类型 

MySQL中,BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据。
MySQL的四种BLOB类型(除了在存储的最大信息量上不同外,他们是等同的)。

实际使用中根据需要存入的数据大小定义不同的BLOB类型。
需要注意的是:如果存储的文件过大,数据库的性能会下降。

ResultSetMetaData 类

可用于获取关于 ResultSet 对象中列的类型和属性信息的对象。

ResultSetMetaData meta = rs.getMetaData();
getColumnName(int column):获取指定列的名称
getColumnLabel(int column):获取指定列的别名
getColumnCount():返回当前 ResultSet 对象中的列数。 
getColumnTypeName(int column):检索指定列的数据库特定的类型名称。 
getColumnDisplaySize(int column):指示指定列的最大标准宽度,以字符为单位。 
isNullable(int column):指示指定列中的值是否可以为 null。  
isAutoIncrement(int column):指示是否自动为指定列进行编号,这样这些列仍然是只读的。 

JDBC API 小结

java.sql.DriverManager は、ドライバーをロードし、データベース接続を取得するために使用されます。
java.sql.Connection は、指定されたデータベースへの接続を完了します。
java.sql.Statement は、特定の接続における SQL 実行ステートメントのコンテナとして機能します。これには 2 つの重要なサブタイプが含まれます。
Java.sql.PreparedSatement は、プリコンパイルされた SQL ステートメントを実行するために使用されます。
Java.sql.CallableStatement は、データベース内のストアド プロシージャの呼び出しを実行するために使用されます。
java.sql.ResultSet は、指定されたステートメントの結果を取得する方法です。

2つのアイデア


インターフェース指向プログラミングのアイデア

ORMアイデア: SQLは列名とテーブル属性名を組み合わせて記述する必要があることに注意してくださいエイリアスに。

2 つのテクノロジー

JDBC メタデータ: ResultSetMetaData;

PropertyUtils: Class.newInstance() を通じてオブジェクトを作成し、クエリされた列値をアセンブルします。このクラスを通じて作成されたものに物体。


5-バッチ処理

JDBC ステートメントをバッチ処理して、処理速度を向上させます。
レコードをバッチで挿入または更新する必要がある場合。 Java のバッチ更新メカニズムを使用すると、複数のステートメントをデータベースに送信してバッチ処理を一度に行うことができます。通常、処理を個別に送信するより効率的です。
JDBC バッチ処理ステートメントには、次の 2 つのメソッドが含まれます。
addBatch(String): バッチ処理する必要がある SQL ステートメントまたはパラメーターを追加します。バッチ処理ステートメントの実行; clearBatch(): キャッシュされたデータのクリア


通常、SQL ステートメントのバッチ実行には次の 2 つの状況が発生します。ステートメントの数;


6-データベース接続プール

データベースベースのWebプログラムを使用および開発する場合、基本的には従来のモード次の手順に従います:


メインプログラム (サーブレット、Bean など) でデータベース接続を確立する
SQL 操作を実行する
データベース接続を切断する

この開発モデルには問題があります:
全般JDBC データベース接続は、DriverManager を使用して取得されます。データベースへの接続が確立されるたびに、接続がメモリにロードされ、ユーザー名とパスワードが検証される必要があります (0.05 秒から 1 秒かかります)。データベース接続が必要な場合は、データベースに接続を要求し、実行完了後に切断します。このアプローチは多くのリソースと時間を消費します。データベース接続リソースが十分に再利用されない場合、同時に何百人、さらには何千人ものユーザーがオンラインに接続している場合、データベース接続操作が頻繁に行われると大量のシステム リソースが占有され、サーバーがクラッシュすることもあります。すべてのデータベース接続は使用後に切断する必要があります。そうしないと、異常によりプログラムが終了しなかった場合に、データベース システムでメモリ リークが発生し、最終的にはデータベースが再起動されます。この種の開発では、作成される接続オブジェクトの数を制御できず、接続が多すぎるとシステム リソースが考慮されずに割り当てられるため、メモリ リークやサーバーのクラッシュが発生する可能性もあります。
データベース接続プール (接続プール)
従来の開発におけるデータベース接続の問題を解決するには、データベース接続プール技術を使用できます。
データベース接続プールの基本的な考え方は、データベース接続用の「バッファー プール」を確立することです。データベース接続を確立する必要がある場合、あらかじめ一定数のコネクションをバッファプールに入れておくと、使用後に「バッファプール」から 1 つだけ取り出して元に戻すだけで済みます。
データベース接続プールは、データベース接続の割り当て、管理、解放を担当し、アプリケーションが新しいデータベース接続を確立する代わりに、既存のデータベース接続を再利用できるようにします。
データベース接続プールは、初期化中に特定の数のデータベース接続を作成し、それらを接続プールに入れます。これらのデータベース接続の数は、データベース接続の最小数によって設定されます。これらのデータベース接続が使用されるかどうかに関係なく、接続プールには少なくともこの数の接続が常に保証されます。接続プール内のデータベース接続の最大数は、接続プールが占有できる最大接続数を制限します。アプリケーションによって接続プールから要求された接続数が最大接続数を超えると、これらの要求は接続プールに追加されます。待機列。 Database接続プールの仕組みデータベース接続プールテクノロジーのアドバンテージinresurceデータベース接続が再利用できるため、原因となる問題を回避することができます。接続の作成と解放が頻繁に行われるため、パフォーマンスのオーバーヘッドが大きくなります。一方、システム消費量の削減に基づいて、システム動作環境の安定性も向上します。

システム応答の高速化

データベース接続プール 初期化プロセス中に、多くの場合、複数のデータベース接続が作成され、バックアップ用に接続プールに配置されます。この時点で、接続の初期化作業は完了です。ビジネス リクエストの処理では、データベース接続の初期化と解放プロセスにかかる時間のオーバーヘッドを回避するために、既存の利用可能な接続が直接使用され、システムの応答時間が短縮されます。

新しいリソース割り当て方法
複数のアプリケーションが同じデータベースを共有するシステムの場合、特定のアプリケーションで使用可能なデータベース接続の最大数は、アプリケーション層でのデータベース接続プールの構成を通じて制限できます。アプリケーションがすべてのデータベース リソースを独占することを回避します。
データベース接続リークを回避する統合接続管理
比較的完全なデータベース接続プールの実装では、事前占有タイムアウト設定に従って占有接続を強制的にリサイクルできるため、定期的なデータベース接続の必要性が回避されます。運用中に発生する可能性のあるリソースのリーク。 2 つのオープン ソース データベース接続プール:
JDBC のデータベース接続プールは javax.sql.DataSource で表されます。DataSource は通常サーバー (Weblogic、WebSphere、Tomcat) によって実装される単なるインターフェイスです。一部のオープン ソース組織 は次の実装を提供しています:

DBCP データベース接続プール
C3P0 データベース接続プール

DataSource は通常、データ ソースと呼ばれます。これには、接続プールと接続プール管理の 2 つの部分が含まれています。DataSource を接続プールと呼ぶのが一般的です。
DataSource は DriverManager を置き換えて接続を取得するために使用されます。これは高速であり、データベースのアクセス速度を大幅に向上させることができます。
DBCP データ ソース
DBCP は、Apache Software Foundation のオープン ソース接続プール実装です。この接続プール実装を使用する場合は、組織内の別のオープン ソース システムに依存します。システムにインストールする必要があります。 次の 2 つの jar ファイルを追加します:

Commons-dbcp.jar: 接続プールの実装

Commons-pool.jar: 接続プール実装の依存ライブラリ

Tomcat の接続プールは正しいです。 この接続プールを使用して実装されています。データベース接続プールは、アプリケーション サーバーと統合することも、アプリケーションによって独立して使用することもできます。
DBCP データ ソースの使用例
データ ソースはデータベース接続とは異なります。データベース接続を生成するファクトリであるため、アプリケーション全体で必要なデータ ソースは 1 つだけです。
データベースへのアクセスが終了すると、プログラムは以前と同様にデータベース接続を閉じます: conn.close(); しかし、上記のコードはデータベースの物理的な接続を閉じず、データベース接続を解放してデータベースに返すだけです。データベース接続プール。

7-データベーストランザクション

トランザクション: データをある状態から別の状態に変換する論理演算単位のセット。
トランザクション処理(トランザクション操作): すべてのトランザクションが作業単位として実行されるようにし、障害が発生した場合でも、この実行方法を変更することはできません。トランザクション内で複数の操作が実行されると、すべてのトランザクションがコミットされて変更が永続的に保存されるか、データベース管理システムがすべての変更を破棄してトランザクション全体が初期状態にロールバックされます。
データベース内のデータの一貫性を確保するには、データ操作は個別の論理ユニットである必要があります。すべてが完了すると、データの一貫性が維持され、このユニットの操作の一部が失敗すると、トランザクション全体が維持されます。すべてエラーとみなされ、開始点以降のすべての操作は開始状態にロールバックされる必要があります。

トランザクションの ACID (acid) プロパティ
1. 原子性
原子性とは、トランザクションが分割できない作業単位であり、トランザクション内の操作がすべて発生するか、どちらも発生しないことを意味します。
2. 整合性
トランザクションは、データベースをある整合性状態から別の整合性状態に変更する必要があります。
3. 分離
トランザクションの分離とは、トランザクションの実行が他のトランザクションによって干渉されないことを意味します。つまり、トランザクション内で使用される操作とデータは、他の同時トランザクションから分離され、同時に実行されます。物事は互いに干渉することはできません。
4. 耐久性

耐久性とは、トランザクションがコミットされると、データベース内のデータへの変更は永続的であり、その後の操作やデータベース障害がトランザクションに影響を与えないことを意味します。トランザクション処理
接続オブジェクトが作成されると、トランザクションはデフォルトで自動的にコミットされます。SQL ステートメントが実行されるたびに、実行が成功すると自動的にデータベースに送信され、ロールバックできません。
複数の SQL ステートメントを 1 つのトランザクションとして実行できるようにするには:

Connection オブジェクトの setAutoCommit(false) を呼び出して、自動コミット トランザクションをキャンセルします

すべての SQL ステートメントが正常に実行された後、 commit(); メソッドを呼び出してトランザクションをコミットします

例外が発生した場合、rollback() メソッドを呼び出してトランザクションをロールバックします

この時点で接続が閉じられていない場合は、自動送信状態を復元する必要があります

送信後のデータステータス

データの変更はデータベースに保存されました。

変更前のデータは失われています。

すべてのユーザーが結果を確認できます。

ロックが解除され、他のユーザーが関連するデータを操作できるようになります。

8-DBUtilsツールクラス

は、データベースを操作するために一般的に使用されるJDBCクラスとメソッド、つまりDBUtilsをまとめています。

BeanHandler: 結果セットをJavaBeanに変換します。

BeanBeanListHandler: 結果セットを Bean のコレクションに変換します

MapHandler: 結果セットを Map に変換します

MapMapListHandler: 結果セットを Map のリストに変換します

ScalarHandler: 結果セットを型に変換します データを返す、この型は通常、String またはその他の 8 つの基本データ型を指します

上記は JDBC の内容です - データベース管理システムの詳細については、PHP 中国語 Web サイト (www. php.cn)!


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。