UPDATE
日本語 | 更新 |
英語 | update |
ふりがな | あっぷでーと |
フリガナ | アップデート |
データを更新するSQL文。
テーブル内の任意の行、任意の列のデータを書き換えるためのSQL文。「UPDATE テーブル名 SET 列名 = 値, ...」の形式で指定した列の値を変更する。ただし、指定したテーブルの全行が更新されるため、通常は「UPDATE テーブル名 SET 列名 = 値, ... WHERE 列名 = 値」のような形式で更新する行の絞り込みを行う。
JDBCを使用する場合、「値」は「?」(ハテナマーク)を使用し、SQLはプリペアードステートメントとする。
PreparedStatementインターフェイスを使用して値をセットしSQLを実行する。
テーブル内の任意の行、任意の列のデータを書き換えるためのSQL文。「UPDATE テーブル名 SET 列名 = 値, ...」の形式で指定した列の値を変更する。ただし、指定したテーブルの全行が更新されるため、通常は「UPDATE テーブル名 SET 列名 = 値, ... WHERE 列名 = 値」のような形式で更新する行の絞り込みを行う。
JDBCを使用する場合、「値」は「?」(ハテナマーク)を使用し、SQLはプリペアードステートメントとする。
PreparedStatementインターフェイスを使用して値をセットしSQLを実行する。
参考サイト
// Sample.java
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Sample
{
public static void main( String[] args )
{
Connection conn = null;
PreparedStatement psCreate = null;
PreparedStatement psInsert = null;
PreparedStatement psUpdate = null;
Statement stmt = null;
ResultSet rs1 = null;
ResultSet rs2 = null;
try
{
// この使用例の使用方法についてはSQLの項目を参照してください。
// まずJDBCドライバを読み込みます。
Class.forName( "org.hsqldb.jdbcDriver" );
// JDBCに接続してコネクションを取得します。
String url = "jdbc:hsqldb:mem:aname";
String user = "sa";
String password = "";
conn = DriverManager.getConnection( url, user, password );
// テスト用テーブルを作ります。
psCreate = null;
final String SQL_CREATE = "CREATE TABLE TABLE_TEST( NAME VARCHAR, VALUE INT );";
psCreate = conn.prepareStatement( SQL_CREATE );
psCreate.execute();
// そのテーブルに3行INSERTします。
final String SQL_INSERT = "INSERT INTO TABLE_TEST ( NAME, VALUE ) VALUES( ?, ? );";
psInsert = conn.prepareStatement( SQL_INSERT );
for( int iF1 = 0; iF1 < 3; ++iF1 )
{
psInsert.setString( 1, "ネーム" + iF1 );
psInsert.setInt( 2, iF1 );
psInsert.execute();
}
// INSERTしたデータをSELECTでクエリーします。
stmt = conn.createStatement();
final String SQL_SELECT = "SELECT NAME, VALUE FROM TABLE_TEST;";
rs1 = stmt.executeQuery( SQL_SELECT );
while( rs1.next() )
{
String name = rs1.getString( "NAME" );
int value = rs1.getInt( "VALUE" );
System.out.println( name + ", " + value );
}
// ネーム0, 0
// ネーム1, 1
// ネーム2, 2
// データを書き換えます。
final String SQL_UPDATE = "UPDATE TABLE_TEST SET VALUE = ? WHERE NAME = ?;";
psUpdate = conn.prepareStatement( SQL_UPDATE );
// NAME列が「ネーム1」の行の、VALUE列の値を100に書き換えます。
// ?に値をセットする方法は、他のプリペアードステートメントと同じ。
// それぞれのインデックスナンバーが?の位置に対応すること、
// インデックスナンバーは1から始まることに注意してください。
psUpdate.setInt( 1, 100 );
psUpdate.setString( 2, "ネーム1" );
psUpdate.execute();
// 削除されたか、もう一度検索してみます。
rs2 = stmt.executeQuery( SQL_SELECT );
while( rs2.next() )
{
String name = rs2.getString( "NAME" );
int value = rs2.getInt( "VALUE" );
System.out.println( name + ", " + value );
}
// ネーム0, 0
// ネーム2, 2
// ネーム1, 100
// このように、NAME列が「ネーム1」の行のVALUE列の値が100になりました。
// また、この際に行の位置が変わりました。このことからも、
// テーブル内での行の位置は不定だということが分かると思います。
// 任意の順番で取得したい場合にはORDER BYを使用してください。
}
catch( SQLException e )
{
// SQLの実行で問題があった場合に投げられます。
e.printStackTrace();
}
catch( ClassNotFoundException e )
{
// JDBCドライバが存在しなかった場合に投げられます。
e.printStackTrace();
}
finally
{
if( rs1 != null )
{
try
{
rs1.close();
}
catch( SQLException e )
{
// 各close()メソッドからもSQLException例外が
// 投げられるので、拾っておきます。
e.printStackTrace();
}
}
if( rs2 != null )
{
try
{
rs2.close();
}
catch( SQLException e )
{
// 各close()メソッドからもSQLException例外が
// 投げられるので、拾っておきます。
e.printStackTrace();
}
}
if( stmt != null )
{
try
{
stmt.close();
}
catch( SQLException e )
{
// 各close()メソッドからもSQLException例外が
// 投げられるので、拾っておきます。
e.printStackTrace();
}
}
if( psUpdate != null )
{
try
{
psUpdate.close();
}
catch( SQLException e )
{
// 各close()メソッドからもSQLException例外が
// 投げられるので、拾っておきます。
e.printStackTrace();
}
}
if( psInsert != null )
{
try
{
psInsert.close();
}
catch( SQLException e )
{
// 各close()メソッドからもSQLException例外が
// 投げられるので、拾っておきます。
e.printStackTrace();
}
}
if( psCreate != null )
{
try
{
psCreate.close();
}
catch( SQLException e )
{
// 各close()メソッドからもSQLException例外が
// 投げられるので、拾っておきます。
e.printStackTrace();
}
}
if( conn != null )
{
try
{
conn.close();
}
catch( SQLException e )
{
// 各close()メソッドからもSQLException例外が
// 投げられるので、拾っておきます。
e.printStackTrace();
}
}
}
}
}
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Sample
{
public static void main( String[] args )
{
Connection conn = null;
PreparedStatement psCreate = null;
PreparedStatement psInsert = null;
PreparedStatement psUpdate = null;
Statement stmt = null;
ResultSet rs1 = null;
ResultSet rs2 = null;
try
{
// この使用例の使用方法についてはSQLの項目を参照してください。
// まずJDBCドライバを読み込みます。
Class.forName( "org.hsqldb.jdbcDriver" );
// JDBCに接続してコネクションを取得します。
String url = "jdbc:hsqldb:mem:aname";
String user = "sa";
String password = "";
conn = DriverManager.getConnection( url, user, password );
// テスト用テーブルを作ります。
psCreate = null;
final String SQL_CREATE = "CREATE TABLE TABLE_TEST( NAME VARCHAR, VALUE INT );";
psCreate = conn.prepareStatement( SQL_CREATE );
psCreate.execute();
// そのテーブルに3行INSERTします。
final String SQL_INSERT = "INSERT INTO TABLE_TEST ( NAME, VALUE ) VALUES( ?, ? );";
psInsert = conn.prepareStatement( SQL_INSERT );
for( int iF1 = 0; iF1 < 3; ++iF1 )
{
psInsert.setString( 1, "ネーム" + iF1 );
psInsert.setInt( 2, iF1 );
psInsert.execute();
}
// INSERTしたデータをSELECTでクエリーします。
stmt = conn.createStatement();
final String SQL_SELECT = "SELECT NAME, VALUE FROM TABLE_TEST;";
rs1 = stmt.executeQuery( SQL_SELECT );
while( rs1.next() )
{
String name = rs1.getString( "NAME" );
int value = rs1.getInt( "VALUE" );
System.out.println( name + ", " + value );
}
// ネーム0, 0
// ネーム1, 1
// ネーム2, 2
// データを書き換えます。
final String SQL_UPDATE = "UPDATE TABLE_TEST SET VALUE = ? WHERE NAME = ?;";
psUpdate = conn.prepareStatement( SQL_UPDATE );
// NAME列が「ネーム1」の行の、VALUE列の値を100に書き換えます。
// ?に値をセットする方法は、他のプリペアードステートメントと同じ。
// それぞれのインデックスナンバーが?の位置に対応すること、
// インデックスナンバーは1から始まることに注意してください。
psUpdate.setInt( 1, 100 );
psUpdate.setString( 2, "ネーム1" );
psUpdate.execute();
// 削除されたか、もう一度検索してみます。
rs2 = stmt.executeQuery( SQL_SELECT );
while( rs2.next() )
{
String name = rs2.getString( "NAME" );
int value = rs2.getInt( "VALUE" );
System.out.println( name + ", " + value );
}
// ネーム0, 0
// ネーム2, 2
// ネーム1, 100
// このように、NAME列が「ネーム1」の行のVALUE列の値が100になりました。
// また、この際に行の位置が変わりました。このことからも、
// テーブル内での行の位置は不定だということが分かると思います。
// 任意の順番で取得したい場合にはORDER BYを使用してください。
}
catch( SQLException e )
{
// SQLの実行で問題があった場合に投げられます。
e.printStackTrace();
}
catch( ClassNotFoundException e )
{
// JDBCドライバが存在しなかった場合に投げられます。
e.printStackTrace();
}
finally
{
if( rs1 != null )
{
try
{
rs1.close();
}
catch( SQLException e )
{
// 各close()メソッドからもSQLException例外が
// 投げられるので、拾っておきます。
e.printStackTrace();
}
}
if( rs2 != null )
{
try
{
rs2.close();
}
catch( SQLException e )
{
// 各close()メソッドからもSQLException例外が
// 投げられるので、拾っておきます。
e.printStackTrace();
}
}
if( stmt != null )
{
try
{
stmt.close();
}
catch( SQLException e )
{
// 各close()メソッドからもSQLException例外が
// 投げられるので、拾っておきます。
e.printStackTrace();
}
}
if( psUpdate != null )
{
try
{
psUpdate.close();
}
catch( SQLException e )
{
// 各close()メソッドからもSQLException例外が
// 投げられるので、拾っておきます。
e.printStackTrace();
}
}
if( psInsert != null )
{
try
{
psInsert.close();
}
catch( SQLException e )
{
// 各close()メソッドからもSQLException例外が
// 投げられるので、拾っておきます。
e.printStackTrace();
}
}
if( psCreate != null )
{
try
{
psCreate.close();
}
catch( SQLException e )
{
// 各close()メソッドからもSQLException例外が
// 投げられるので、拾っておきます。
e.printStackTrace();
}
}
if( conn != null )
{
try
{
conn.close();
}
catch( SQLException e )
{
// 各close()メソッドからもSQLException例外が
// 投げられるので、拾っておきます。
e.printStackTrace();
}
}
}
}
}
// Sample.java import java.sql.DriverManager; import java.sql.Connection; import java.sql.Statement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class Sample { public static void main( String[] args ) { Connection conn = null; PreparedStatement psCreate = null; PreparedStatement psInsert = null; PreparedStatement psUpdate = null; Statement stmt = null; ResultSet rs1 = null; ResultSet rs2 = null; try { // この使用例の使用方法についてはSQLの項目を参照してください。 // まずJDBCドライバを読み込みます。 Class.forName( "org.hsqldb.jdbcDriver" ); // JDBCに接続してコネクションを取得します。 String url = "jdbc:hsqldb:mem:aname"; String user = "sa"; String password = ""; conn = DriverManager.getConnection( url, user, password ); // テスト用テーブルを作ります。 psCreate = null; final String SQL_CREATE = "CREATE TABLE TABLE_TEST( NAME VARCHAR, VALUE INT );"; psCreate = conn.prepareStatement( SQL_CREATE ); psCreate.execute(); // そのテーブルに3行INSERTします。 final String SQL_INSERT = "INSERT INTO TABLE_TEST ( NAME, VALUE ) VALUES( ?, ? );"; psInsert = conn.prepareStatement( SQL_INSERT ); for( int iF1 = 0; iF1 < 3; ++iF1 ) { psInsert.setString( 1, "ネーム" + iF1 ); psInsert.setInt( 2, iF1 ); psInsert.execute(); } // INSERTしたデータをSELECTでクエリーします。 stmt = conn.createStatement(); final String SQL_SELECT = "SELECT NAME, VALUE FROM TABLE_TEST;"; rs1 = stmt.executeQuery( SQL_SELECT ); while( rs1.next() ) { String name = rs1.getString( "NAME" ); int value = rs1.getInt( "VALUE" ); System.out.println( name + ", " + value ); } // ネーム0, 0 // ネーム1, 1 // ネーム2, 2 // データを書き換えます。 final String SQL_UPDATE = "UPDATE TABLE_TEST SET VALUE = ? WHERE NAME = ?;"; psUpdate = conn.prepareStatement( SQL_UPDATE ); // NAME列が「ネーム1」の行の、VALUE列の値を100に書き換えます。 // ?に値をセットする方法は、他のプリペアードステートメントと同じ。 // それぞれのインデックスナンバーが?の位置に対応すること、 // インデックスナンバーは1から始まることに注意してください。 psUpdate.setInt( 1, 100 ); psUpdate.setString( 2, "ネーム1" ); psUpdate.execute(); // 削除されたか、もう一度検索してみます。 rs2 = stmt.executeQuery( SQL_SELECT ); while( rs2.next() ) { String name = rs2.getString( "NAME" ); int value = rs2.getInt( "VALUE" ); System.out.println( name + ", " + value ); } // ネーム0, 0 // ネーム2, 2 // ネーム1, 100 // このように、NAME列が「ネーム1」の行のVALUE列の値が100になりました。 // また、この際に行の位置が変わりました。このことからも、 // テーブル内での行の位置は不定だということが分かると思います。 // 任意の順番で取得したい場合にはORDER BYを使用してください。 } catch( SQLException e ) { // SQLの実行で問題があった場合に投げられます。 e.printStackTrace(); } catch( ClassNotFoundException e ) { // JDBCドライバが存在しなかった場合に投げられます。 e.printStackTrace(); } finally { if( rs1 != null ) { try { rs1.close(); } catch( SQLException e ) { // 各close()メソッドからもSQLException例外が // 投げられるので、拾っておきます。 e.printStackTrace(); } } if( rs2 != null ) { try { rs2.close(); } catch( SQLException e ) { // 各close()メソッドからもSQLException例外が // 投げられるので、拾っておきます。 e.printStackTrace(); } } if( stmt != null ) { try { stmt.close(); } catch( SQLException e ) { // 各close()メソッドからもSQLException例外が // 投げられるので、拾っておきます。 e.printStackTrace(); } } if( psUpdate != null ) { try { psUpdate.close(); } catch( SQLException e ) { // 各close()メソッドからもSQLException例外が // 投げられるので、拾っておきます。 e.printStackTrace(); } } if( psInsert != null ) { try { psInsert.close(); } catch( SQLException e ) { // 各close()メソッドからもSQLException例外が // 投げられるので、拾っておきます。 e.printStackTrace(); } } if( psCreate != null ) { try { psCreate.close(); } catch( SQLException e ) { // 各close()メソッドからもSQLException例外が // 投げられるので、拾っておきます。 e.printStackTrace(); } } if( conn != null ) { try { conn.close(); } catch( SQLException e ) { // 各close()メソッドからもSQLException例外が // 投げられるので、拾っておきます。 e.printStackTrace(); } } } } }