JDBC思考悟り(上)

4095 ワード

Javaを学ぶときにJDBCを無視しがちな人が多いので、本編ではJDBCとは何かを詳しく理解してみましょう.
1.JDBCとは?
最も直感的な答えはJDBCがjavaパッケージされたapiであり、データベースサービスに接続するために使用されます.インタフェースを呼び出すことで、データベースのコンテンツを取得できます.
2.JDBCの構成部分?
**・**JDBCドライバマネージャ***JDBCドライバテストキット***JDBC-ODBCブリッジ
a.JDBCドライバマネージャの主な役割はjavaアプリケーションを正しいJDBCドライバに接続することです.
b.ドライバテストキットはJDBCドライバの実行に一定の信頼性を提供し、JDBCドライバテストパッケージを通過したドライバのみがJDBC規格に適合していると考えられる.
c.JDBC-ODBCブリッジのODBCドライバは、いくつかの一般的でないデータベース管理システムへのアクセスを容易にするために、JDBCドライバとして使用することができる.
3.JDBCドライブのプロセス?
JDBCドライバは、データベース・サーバと対話するためのJDBC APIで定義されたインタフェースを実装します.JDBCドライバは、データベース接続を開き、SQLまたはデータベースコマンドを送信してjavaと対話する結果を受信できます.
4.JDBCがデータベースに接続するには?
1.JDBCドライバのインポート:ドライバを所有している場合にのみ、ドライバを登録して接続を完了する他の手順があります.
2.JDBCドライバの登録:これにより、JVMロードに必要なドライバがメモリに実装されるため、JDBCリクエストを実装できます.
メソッド1--Class.forName():ドライバのクラスファイルをメモリに動的にロードする最も一般的な方法で、自動的に登録されます.
方法2--DRiverManager.registerDriver()
Driver driver = new com.mysql.jdbc.Driver(); DriverManager.registerDriver(driver);
3.データベースURL作成:接続するデータベースへの正しい形式のアドレスを作成します.
4.接続オブジェクトの作成:最後に、コードはDriverManagerオブジェクトのgetConnection()メソッドを呼び出して世紀のデータベース接続を確立します.
#一般的に使用されるメソッドはgetConnection()です.このメソッドには、パラメータ付きのリロードメソッドが3つあります.
4.JDBCインタフェース
JDBC Statement、CallableStatement、およびPreparedStatementインタフェースで定義されたメソッドとプロパティにより、SQLまたはPL/SQLコマンドを送信し、データベースからデータを受信できます.
4.1 3つの主要なインタフェース
a.Statement
Statementインタフェースを使用するには、まずStatementオブジェクトを作成します.ConnectionオブジェクトのcreateStatement()メソッドを使用して作成する必要があります.
boolean execute(String SQL):ResultSetオブジェクトがブール値trueを返すように取得できる場合、そうでない場合falseを返します.このメソッドを使用してSQL DDL文を実行するか、実際の動的SQLを使用する必要がある場合
int executeUpdate(String SQL):INSERT、UPDATEまたはDELETE文、およびSQLDDL(データ定義言語)文を実行します.戻り値は、影響を受けるローの数(更新カウント)を示す整数です.
ResultSet executeQuery(String SQL):ResultSetオブジェクトを返します.単一の結果セットを生成する文、たとえばSELECT文
b. PreparedStatement
PreparedStatementインタフェースはStatementインタフェースを拡張し、複数回使用されるSQL文を効率的に実行するのに役立ちます.まずPreparedStatementオブジェクトを作成します.StatementはSQL文の実行計画を生成します.SQL文を2つ実行すると、2つの実行プランが生成されます.1万個のクエリーで1万個の実行計画が生成されます! 
c.CallableStatement
CallableStatementオブジェクトは、すべてのDBMSに対して標準的な形式でストレージ・プロシージャを呼び出す方法を提供します.ストレージ・プロシージャはデータベースに格納されます.ストアド・プロシージャの呼び出しは、CallableStatementオブジェクトに含まれる内容です.3種類のパラメータは、IN、OUT、INOUTです.PreparedStatementオブジェクトはINパラメータのみを使用します.CallableStatementオブジェクトはすべて3つ使用できます
IN:SQL文の作成時に不明なパラメータです.INパラメータをCallableStatementオブジェクトに渡すにはsetXXX()メソッドで行います.
OUT:その値が返されるSQL文のパラメータです.OUTパラメータのgetXXX()メソッドから値を取得する
INOUT:入力値と出力値のパラメータを同時に提供し、バインドされたsetXXX()メソッドの変数を提供し、getXXX()メソッドを使用して値を取得するCallableStatement cstmt = null;
try {
String SQL = "{call getEXAMPLEName (?, ?)}";
cstmt = conn.prepareCall (SQL);
. . .
}
catch (SQLException e) {
. . .
}
finally {
cstmt.close();
}

5.JDBC結果セット
結果セットは、通常、クエリー・データベースを実行する文によって生成され、データベース・クエリーの結果を表すデータ・テーブルです.ResultSetオブジェクトには、現在のデータ行を指すカーソルがあります.最初は、カーソルが最初の行の前に置かれます.nextメソッドはカーソルを次の行に移動します.このメソッドはResultSetオブジェクトに次の行がない場合にfalseを返すため、whileループで結果セットを反復するために使用できます.カーソルは、結果セットを巡回するのに便利です.デフォルトのResultSetオブジェクトは更新できません.前方に移動するカーソルは1つしかありません.したがって、反復は1回のみ行われ、最初の行から最後の行までの順序でのみ行われます.
ResultSetインタフェースのメソッドは、次の3つに分類されます.
・ナビゲーション方法:カーソル移動・取得方法:現在の行のカーソルが指す列のデータを表示・更新方法:現在の行の列のデータを更新する
createStatement(int RSType, int RSConcurrency);//RSType    ResultSet      ,RSConcurrency   ResultSet   ,                  。      ResultSet   ,         TYPE_FORWARD_ONLY。

prepareStatement(String SQL, int RSType, int RSConcurrency);

prepareCall(String sql, int RSType, int RSConcurrency);

Statementオブジェクトを初期化して双方向で更新可能なResultSetオブジェクトを作成すると、`try{
Statement stmt = conn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); } catch(Exception ex) { …. } finally { …. }`
結果セットには多くの方法があり、自分でAPIを表示できます.