JAVAデータベース基本操作ガイド
Javaデータベース操作基本フロー:取得データベース接続−実行sql文−処理実行結果−解放データベース接続。
一、データベース接続を取得する
1、Driver Managerでデータベース接続を取る
例:
String className,url,uid,pwd;
className = "oracle.jdbc.driver.OracleDriver";
url = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr;
uid = "system";
pwd = "manager";
Class.forName(className);
Connection cn = DriverManager.getConnection(url,uid,pwd);
2、jndi(javaの命名とカタログサービス)方式で例:
String jndi = "jdbc/db";
Context ctx = (Context) new InitialContext().lookup("java:comp/env");
DataSource ds = (DataSource) ctx.lookup(jndi);
Connection cn = ds.getConnection();
jspに多く用いられる。二、sql文を実行する
1、Sttementでsql文を実行する
String sql;
Statement sm = cn.createStatement();
sm.executeQuery(sql); // (select)
sm.executeUpdate(sql); // (delete、update、insert、drop )
statement.close();
2、PreparedSttementでsql文を実行するString sql;
sql = "insert into user (id,name) values (?,?)";
PreparedStatement ps = cn.prepareStatement(sql);
ps.setInt(1,xxx);
ps.setString(2,xxx);
...
ResultSet rs = ps.executeQuery(); //
int c = ps.executeUpdate(); //
三、処理実行結果
クエリ文は、レコードセットResultSetに戻ります。
ステートメントを更新し、数字を返して、この更新の影響の記録数を表します。
ResultSetの方法
(1)next()は、旅行標識を後ろの行に移動し、もしtrueに戻ることができたら。そうでないとfalseに戻ります
(2)getInt(「id」)またはgetSting(「name」)は、現在のラベルの下のフィールドの値を返します。
四、解放接続
cn.close();
一般的に、まずResultSetをオフにして、Sttementをオフにします。最後にConnectionをオフします。
(一)スクロール可能、更新可能な記録セット
1、スクロール可能、更新可能なSttementを作成する
Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,
ResultSet.CONCUR_READ_ONLY);
このSttementが取得したResultSetはスクロール可能です。2、PreparedSttement作成時にパラメータを指定する
PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
ResultSet.absolute(9000);
(二)一括更新
1、Sttement
Statement sm = cn.createStatement();
sm.addBatch(sql1);
sm.addBatch(sql2);
...
sm.executeBatch()
一つのSttementオブジェクトは、複数のsql文を実行した後、一括更新できます。これらの複数の語句は、delete、udate、insertなどまたは兼用することができる。2、PreparedSttement
PreparedStatement ps = cn.preparedStatement(sql);
{
ps.setXXX(1,xxx);
...
ps.addBatch();
}
ps.executeBatch();
一つのPreparedSttementは、一つのsql文を、変換パラメータを複数回実行し、一回更新することができます。(三)事務の処理
1、コネクションの自動提出をクローズする
cn.setAutoCommit(false);
2、一連のsql文を実行するポイント:各新しいsql文を実行する前に、前のsql文を実行するSttement(またはPreparedSttement)は先にcloseしなければなりません。
Statement sm ;
sm = cn.createStatement(insert into user...);
sm.executeUpdate();
sm.close();
sm = cn.createStatement("insert into corp...);
sm.executeUpdate();
sm.close();
3、提出するcn.commit();
4、異常が発生したら、ロールバックします。cn.rollback();