java 数据库基本操作 AW XBk+
1、java数据库操作基本流程 3=)!9;uY
2、几个常用的重要技巧: 1&wI*4
可滚动、更新的记录集 5Y#W$Fx($R
批量更新 |$)+h\h
事务处理 {e1akg.
5d4/}o}%"
java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接 _>k&,p]y
1、取得数据库连接 R)<PCe`vf
1)用DriverManager取数据库连接 y|e@z f
例子 ^O9_dP:
String className,url,uid,pwd; qkLp8/G>pO
className = "oracle.jdbc.driver.OracleDriver"; 'on8r*
url = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr; 15 /lX
uid = "system"; &rj)Oh2
pwd = "manager"; pSzO)j
Class.forName(className); %#zqZ|q
Connection cn = DriverManager.getConnection(url,uid,pwd); l?UFe$9(
2)用jndi(java的命名和目录服务)方式 y>5??q
例子 %:DH_0
String jndi = "jdbc/db"; -%g$~MZ?'
Context ctx = (Context) new InitialContext().lookup("java:comp/env"); n@`:"j%s_
DataSource ds = (DataSource) ctx.lookup(jndi); O\"k[V?.V
Connection cn = ds.getConnection(); iz0GL&<
多用于jsp中 .wb[cCUQ
2、执行sql语句 n'42CE
1)用Statement来执行sql语句 J$/'nL<{^
String sql; v"LH^!/
Statement sm = cn.createStatement(); ==?!z<I.d
sm.executeQuery(sql); // 执行数据查询语句(select) UrP jZ:K'
sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)statement.close(); L2j7w006
2)用PreparedStatement来执行sql语句 0[O ."9
String sql; GgNqc i,
sql = "insert into user (id,name) values (?,?)"; KbcmK(`_
PreparedStatement ps = cn.prepareStatement(sql); RXbhuI
ps.setInt(1,xxx); ptlcG9d-
ps.setString(2,xxx); NhgzU+)+
... I\,m6=q
ResultSet rs = ps.executeQuery(); // 查询 wt(Hk6/B
int c = ps.executeUpdate(); // 更新 uDWxIP,m
B}&9+2M
3、处理执行结果 kW!`vQm~
查询语句,返回记录集ResultSet ^Fe%1Lnt
更新语句,返回数字,表示该更新影响的记录数 _Z>I"m
ResultSet的方法 :CR1Oy 9
1、next(),将游标往后移动一行,如果成功返回true;否则返回false gl$ Ks+od
2、getInt("id")或getSting("name"),返回当前游标下某个字段的值 @N% /v*
Q~y) V
4、释放连接 x&N!SU6
cn.close(); : =J^ "c
一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection Uh tk`2O
KIeTZVu$%
可滚动、更新的记录集 "7.
lsL5
1、创建可滚动、更新的Statement _x&fK$Y)B
Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY); !VXs
yH3r5
该Statement取得的ResultSet就是可滚动的 MB:VACCr
2、创建PreparedStatement时指定参数 5x}XiMM
PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); A$a>=U|Z8
ResultSet.absolute(9000); }R\9ybv
批量更新 l?rT_uO 4
1、Statement 3SMb#ce*o
Statement sm = cn.createStatement(); {f12&t
sm.addBatch(sql1); -<jd/ 5
sm.addBatch(sql2); !idQ-&
... TA"4yri=7x
sm.executeBatch() n_qDg
一个Statement对象,可以执行多个sql语句以后,批量更新。这多个语句可以是delete、update、insert等或兼有 @8jc|X<A
2、PreparedStatement WbP
wO
PreparedStatement ps = cn.preparedStatement(sql); .R<Ke\y/
{ s&