java 数据库基本操作 4zghM<
1、java数据库操作基本流程 VL5kjF3/
2、几个常用的重要技巧: =1^a/
可滚动、更新的记录集 ?97MW a
批量更新 DGY#pnCu
事务处理 yb/<
7
W9 y8dw.
java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接 Orh5d7+S
1、取得数据库连接 uZZ[`PA(
1)用DriverManager取数据库连接 QxnP+U~N
例子 ^
vI|
String className,url,uid,pwd; R+]p
-NI^
className = "oracle.jdbc.driver.OracleDriver"; %9M; MK
url = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr; D{o1G?A
uid = "system"; yP0P-8
pwd = "manager"; iM2
EEC
Class.forName(className); fEs957$
Connection cn = DriverManager.getConnection(url,uid,pwd); `'Ta=kd3
2)用jndi(java的命名和目录服务)方式 4 E3@O
例子 ,- ]2s_
String jndi = "jdbc/db"; cYx=8~-
Context ctx = (Context) new InitialContext().lookup("java:comp/env"); )$q<"t\#P#
DataSource ds = (DataSource) ctx.lookup(jndi); 1E$Z]5C9
Connection cn = ds.getConnection(); xy mK|
多用于jsp中 q^sMJ
2、执行sql语句 `Q26Dk
1)用Statement来执行sql语句 $Br^c< y
String sql; ~p;<H
Statement sm = cn.createStatement(); ,<hXNN
sm.executeQuery(sql); // 执行数据查询语句(select) )I]E%ut{4,
sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)statement.close(); Tp`)cdcC[
2)用PreparedStatement来执行sql语句 S
!c/"~X+
String sql; d!8q+FI
sql = "insert into user (id,name) values (?,?)"; ]+0-$t7Y
PreparedStatement ps = cn.prepareStatement(sql); +^YV>;
ps.setInt(1,xxx); _if&a'
ps.setString(2,xxx); ?y<n^`
... 6AUzS4O
ResultSet rs = ps.executeQuery(); // 查询 I#eIm3Y?
int c = ps.executeUpdate(); // 更新 xHsH .f_{
`^AbFV
3
3、处理执行结果 F/j=rs,*|D
查询语句,返回记录集ResultSet @PwEom`a
更新语句,返回数字,表示该更新影响的记录数 ?]fBds=
ResultSet的方法 k`g+
1、next(),将游标往后移动一行,如果成功返回true;否则返回false w2]1ftY
2、getInt("id")或getSting("name"),返回当前游标下某个字段的值 vzi=[A
&8"a 7$
4、释放连接 ^\N2
Iu>6
cn.close(); j,/o0k,
一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection W\.f:"2qr
>[|:cz
可滚动、更新的记录集 #*S/Sh?Q
1、创建可滚动、更新的Statement W}L=JJo},
Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY); eE7Rd>
该Statement取得的ResultSet就是可滚动的 #PXl*~PrQ/
2、创建PreparedStatement时指定参数 |D]jdd@!a2
PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); s^C*uP;R
ResultSet.absolute(9000); `m2F.^qrr
批量更新 D{N1.rSxv
1、Statement pMt]wyKr
Statement sm = cn.createStatement(); a]X6) 6
sm.addBatch(sql1); eBU\&