()のexecuteUpdateでSQLコマンドの実行¶
前の例では、 ListEmployeesはStatement.executeQuery()メソッドを使用してSELECTステートメントを実行しました。 executeQuery()は、クエリステートメントを実行するように設計されているため、クエリによって返されたデータを含むResultSetを返します。 Statementクラスは、他のタイプのコマンド( UPDATE 、 INSERT 、 DELETEなど)を実行するために使用する2番目のメソッドを提供します。行のコレクションを返す代わりに、 executeUpdate()メソッドは、実行するSQLコマンドの影響を受ける行の数を返します。
executeUpdate()メソッドのシグネチャは次のとおりです。
int executeUpdate ( String sqlStatement )
このメソッドに、実行するSQLコマンドを含むString型の単一のパラメーターを提供します。
executeUpdate()を使用してデータを挿入する¶
次の例は、 executeUpdate()メソッドを使用してempテーブルに行を追加する方法を示しています。
注:次の例は完全なアプリケーションではなく、メソッドにすぎません。このドキュメントの残りのサンプルには、 Connectionセットアップと破棄に必要なコードは含まれていません。この例を試すには、サンプルコードを呼び出すクラスを提供する必要があります。
リスト1.3
public void updateEmployee(Connection con)
{
try
{
Console console = System.console();
Statement stmt = con.createStatement();
String empno = console.readLine("Employee Number :");
String ename = console.readLine("Employee Name :");
int rowcount = stmt.executeUpdate("INSERT INTO emp(empno, ename)
VALUES("+empno+",'"+ename+"')");
System.out.println("");
System.out.println("Success - "+rowcount+" rows affected.");
}
catch(Exception err)
{
System.out.println("An error has occurred.");
System.out.println("See full details below.");
err.printStackTrace();
}
}
updateEmployee()メソッドは、呼び出し元からの1つの引数、Advanced Serverデータベースに接続する必要があるConnectionオブジェクトを必要とします。
public void updateEmployee(Connection con)
次に、 updateEmployee()は従業員の名前と番号の入力をユーザーに求めます。
String empno = console.readLine("Employee Number :");
String ename = console.readLine("Employee Name :");
updateEmployee()は、 console.readline()によって返された値をINSERTステートメントに連結し、結果をexecuteUpdate()メソッドに渡します。
int rowcount = stmt.executeUpdate("INSERT INTO emp(empno, ename)
VALUES("+empno+",'"+ename+"')");
たとえば、ユーザーが従業員番号6000と名前Jones入力した場合、 executeUpdate()渡されるINSERTステートメントは次のようになります。
INSERT INTO emp(empno, ename) VALUES(6000, 'Jones');
executeUpdate()メソッドは、SQLステートメントの影響を受ける行の数を返します(通常、 INSERTは1つの行に影響を与えますが、 UPDATEまたはDELETEステートメントはそれ以上に影響を与えます)。 executeUpdate()がエラーをスローせずに戻った場合、 System.out.printlnの呼び出しは、影響を受けた行の数を示すメッセージをユーザーに表示します。
System.out.println("");
System.out.println("Success - "+rowcount+" rows affected.");
プログラムで例外が発生した場合、catchブロックはユーザーに適切なエラーメッセージを表示します。
{
System.out.println("An error has occurred.");
System.out.println("See full details below.");
err.printStackTrace();
}
executeUpdate()構文例¶
executeUpdate()は、結果セットを返さないSQLコマンドで使用できます。 SQLコマンドでexecuteUpdate()を使用するいくつかの簡単な構文例を次に示します。
executeUpdate() UPDATEコマンドを使用して行を更新するには:
stmt . executeUpdate ( "UPDATE emp SET ename='" + ename + "' WHERE empno=" + empno );
executeUpdate() DELETEコマンドを使用して、テーブルから行を削除するには:
stmt . executeUpdate ( "DELETE FROM emp WHERE empno=" + empno );
executeUpdate()でDROP TABLEコマンドを使用して、データベースからテーブルを削除するには:
stmt . executeUpdate ( "DROP TABLE tablename" );
executeUpdate()でCREATE TABLEコマンドを使用して、データベースに新しいテーブルを追加するには:
stmt . executeUpdate ( "CREATE TABLE tablename (fieldname NUMBER(4,2),
fieldname2 VARCHAR2(30))" );
executeUpdate()でALTER TABLEコマンドを使用して、テーブルの属性を変更するには:
stmt . executeUpdate ( "ALTER TABLE tablename ADD COLUMN colname BOOLEAN" );
