java數據庫操作基本流程 幾個常用的重要技巧
可滾動
更新的記錄集
批量更新
事務處理
java數據庫操作基本流程
取得數據庫連接
執行sql語句
處理執行結果
釋放數據庫連接
取得數據庫連接
)用DriverManager取數據庫連接
例子
String className
url
uid
pwd;
className =
oracle
jdbc
driver
OracleDriver
;
url =
jdbc:oracle:thin:@
:
:orasvr;
uid =
system
;
pwd =
manager
;
Class
forName(className);
Connection cn = DriverManager
getConnection(url
uid
pwd);
)用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語句 )用Statement來執行sql語句
String sql;
Statement sm = cn
createStatement();
sm
executeQuery(sql); // 執行數據查詢語句(select)
sm
executeUpdate(sql); // 執行數據更新語句(delete
update
insert
drop等)statement
close();
)用PreparedStatement來執行sql語句
String sql;
sql =
insert into user (id
name) values (?
?)
;
PreparedStatement ps = cn
prepareStatement(sql);
ps
setInt(
xxx);
ps
setString(
xxx);
ResultSet rs = ps
executeQuery(); // 查詢
int c = ps
executeUpdate(); // 更新
處理執行結果 查詢語句
返回記錄集ResultSet
更新語句
返回數字
表示該更新影響的記錄數
ResultSet的方法
next()
將游標往後移動一行
如果成功返回true
否則返回false
getInt(
id
)或getSting(
name
)
返回當前游標下某個字段的值
釋放連接
cn
close();
一般
先關閉ResultSet
然後關閉Statement(或者PreparedStatement)
最後關閉Connection
可滾動
更新的記錄集
創建可滾動
更新的Statement
Statement sm = cn
createStatement(ResultSet
TYPE_SCROLL_ENSITIVE
ResultSet
CONCUR_READ_ONLY);
該Statement取得的ResultSet就是可滾動的
創建PreparedStatement時指定參數
PreparedStatemet ps = cn
prepareStatement(sql
ResultSet
TYPE_SCROLL_INSENSITIVE
ResultSet
CONCUR_READ_ONLY);
ResultSet
absolute(
);
批量更新
Statement
Statement sm = cn
createStatement();
sm
addBatch(sql
);
sm
addBatch(sql
);
sm
executeBatch()
一個Statement對象
可以執行多個sql語句以後
批量更新
這多個語句可以是delete
update
insert等或兼有
PreparedStatement
PreparedStatement ps = cn
preparedStatement(sql);
{
ps
setXXX(
xxx);
ps
addBatch();
}
ps
executeBatch();
一個PreparedStatement
可以把一個sql語句
變換參數多次執行
一次更新
事務的處理
關閉Connection的自動提交
cn
setAutoCommit(false);
執行一系列sql語句
要點
執行每一個新的sql語句前
上一次執行sql語句的Statement(或者PreparedStatemet)必須先close
Statement sm ;
sm = cn
createStatement(insert into user
);
sm
executeUpdate();
sm
close();
sm = cn
createStatement(
insert into corp
);
sm
executeUpdate();
sm
close();
提交
mit();
如果發生異常
那麼回滾
cn
rollback();
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28249.html