接続が取得されると、データベースと対話できます。 JDBCステートメント、CALLABLESTATEMENT、および準備インターフェイスで定義されている方法とプロパティにより、SQLまたはPL/SQLコマンドを送信し、データベースからデータを受信できます。
また、SQLデータ型を使用して、Javaとデータベースのデータの違いを変換するのに役立つ方法も定義します。
次の表には、各インターフェイスが使用するインターフェイスを理解するために使用する方法の概要を示します。
ステートメントオブジェクト:
ステートメントオブジェクトを作成します
ステートメントオブジェクトを使用してSQLステートメントを実行できる場合、次の例に示すように、接続オブジェクトのcreateStatement()メソッドを使用して作成する必要があります。
ステートメントstmt = null; try {stmt = conn.createstatement(); 。 。 。} catch(sqlexception e){。 。 。} ついに { 。 。 。}ステートメントオブジェクトが作成されると、3つの実行方法のいずれかでSQLステートメントを実行するために使用できます。
boolean execute(string sql):resuster setオブジェクトを取得できる場合、boolean値を返します。この方法を使用して、SQL DDLステートメントを実行するか、実際の動的SQLを使用する場合。
int executeUpdate(String SQL):影響を受けるSQLステートメントによって実行される行の数を返します。この方法を使用して実行し、SQLステートメントの影響を受けた行を取得することを望んでいます - たとえば、ステートメントを挿入、更新、または削除します。
Resultset executeQuery(String SQL):resustersetオブジェクトを返します。選択されたステートメントを使用するのと同じように、結果セットを取得するときは、この方法を使用します。
ステートメントオブジェクトを閉じる:
データベースリソースを保持するために接続オブジェクトを閉じるのと同じように、同じ理由でステートメントオブジェクトを閉じる必要があります。
close()メソッドへの簡単な呼び出しがジョブを行います。接続オブジェクトが最初に閉じている場合、ステートメントオブジェクトも閉じます。ただし、適切なクリアランスを確保するために、ステートメントオブジェクトは常に明示的に閉じている必要があります。
ステートメントstmt = null; try {stmt = conn.createstatement(); 。 。 。} catch(sqlexception e){。 。 。}最後に{stmt.close();}
準備オブジェクト
reparedStatementインターフェイスはステートメントインターフェイスを拡張し、いくつかの高度な機能を共通のステートメントオブジェクトに追加できるようにします。
ステートメントは、動的なパラメーターの柔軟性を提供します。
準備されたステートメントオブジェクトを作成します。
preatedStatement pstmt = null; try {string sql = "従業員を更新します。年齢=?where id =?"; pstmt = conn.preparestatement(sql); 。 。 。} catch(sqlexception e){。 。 。} ついに { 。 。 。}JDBCのすべてのパラメーターは表されますか?既知のパラメーターマーカーであるシンボル。 SQLステートメントを実行する前に、値の各パラメーターを提供する必要があります。
SETXXX()メソッドは、値をパラメーターにバインドします。ここで、XXXは入力パラメーター値にバインドするJavaデータ型を表します。値を提供するのを忘れた場合、sqlexceptionを受け取ります。
各パラメータータグは、シーケンス番号の位置によって参照されます。最初のマークは位置1、次の位置は2などを示します。この方法は、0から始まるJavaアレイインデックスとは異なります。
すべてのステートメントオブジェクトデータベース(a)execute()、(b)executeQuery()、および(c)executeUpDate()と対話する方法は、準備オブジェクトでも動作します。ただし、この方法は、入力パラメーターを利用できるSQLステートメントを使用するように変更されています。
準備された測定オブジェクトを閉じます:
ステートメントオブジェクトを閉じるのと同じように、同じ理由で、準備オブジェクトも閉じている必要があります。
close()メソッドへの簡単な呼び出しがジョブを行います。接続オブジェクトが閉じている場合、最初に準備された測定オブジェクトを閉じます。ただし、正しいクリアランスを確保するために、準備された測定オブジェクトは常に明示的に閉じている必要があります。
preatedStatement pstmt = null; try {string sql = "従業員を更新します。年齢=?where id =?"; pstmt = conn.preparestatement(sql); 。 。 。} catch(sqlexception e){。 。 。}最後に{pstmt.close();}準備段階インスタンス
準備した状態を使用して、スタチムをオンとオフにするこの例を次に示します。
次の例をコピーしてjdbcexample.java、以下に示すようにコンパイルして実行します。
//ステップ1。必要なpackagesimport java.sql。*; public class jdbcexample {// jdbcドライバー名とデータベースurl static final string jdbc_driver = "com.mysql.jdbc.driver";静的最終文字列db_url = "jdbc:mysql:// localhost/emp"; //データベース資格情報静的な最終文字列ユーザー= "username";静的な最終文字列パス= "パスワード"; public static void main(string [] args){connection conn = null; preatedStatement stmt = null; try {//ステップ2:JDBCドライバーclass.fornameを登録する( "com.mysql.jdbc.driver"); //ステップ3:接続system.out.println( "データベースへの接続..."); conn = drivermanager.getConnection(db_url、user、pass); //ステップ4:クエリSystem.out.println( "作成ステートメント...")を実行する;文字列sql = "従業員を更新します=?where id =?"; stmt = conn.preparestatement(sql); //値をパラメーターにバインドします。 stmt.setint(1、35); //これにより、stmt.setint(2、102)を設定します。 //これはIDを設定します// ID = 102でレコードの年齢を更新させてください。 int rows = stmt.executeupdate(); System.out.println( "rowsの影響:" + rows); //すべてのレコードを選択して表示します。 sql = "IDを選択、最初、最後、従業員からの年齢";結果rs = stmt.executequery(sql); //ステップ5:結果セットからデータを抽出しますwhile(rs.next()){//列名前で取得int id = rs.getint( "id"); int age = rs.getint( "age");文字列first = rs.getString( "first");文字列last = rs.getString( "last"); //値system.out.print( "id:" + id); System.out.print( "、age:" + age); System.out.print( "、first:" + first); system.out.println( "、last:" + last); } //ステップ6:クリーンアップ環境rs.Close(); stmt.close(); conn.close(); } catch(sqlexception se){// jdbc se.printstacktrace()のエラーを処理します。 } catch(例外e){// class.forname e.printstacktrace()のエラーを処理します。 }最後に{//最後にブロックはリソースを閉じるために使用されます{if(stmt!= null)stmt.close(); } catch(sqlexception se2){} //私たちができることは何もありません{if(conn!= null)conn.close(); } catch(sqlexception se){se.printstacktrace(); } //最後にtry try} // try system.out.println( "goodbye!"); } // end main} // jdbcexampleを終了します次に、上記の例を次のようにコンパイルしましょう。
C:> Javac jdbcexample.java
jdbcexampleを実行すると、次の結果が生成されます。
C:> Java jdbcexample
データベースへの接続...ステートメントの作成...行影響:1ID:100、年齢:18、最初:Zara、last:Aliid:101、Age:Mahnaz、Last:Fatmaid:102、Age:Zaid、Last:103、Age:30、First:Sumit、MiTalgoodbye!