java 数据库基本操作 Al*=%nY
1、java数据库操作基本流程 %/w-.?bX
2、几个常用的重要技巧: '6qH@r4Z<
可滚动、更新的记录集 wsB-(
0-
批量更新 {l$)X
事务处理 A4@z+ebb l
zqdkt `
java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接 drjNK!XL@
1、取得数据库连接 ^2Cqy%x-
1)用DriverManager取数据库连接 9D\E0YG X/
例子 98 R/^\
String className,url,uid,pwd; D? %*L
className = "oracle.jdbc.driver.OracleDriver"; W)r|9G8T
url = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr; mv:@ D
uid = "system"; u-iQ
pwd = "manager"; +
>dC
Class.forName(className); -{OJM|W+
Connection cn = DriverManager.getConnection(url,uid,pwd); ,0h{RZKw
2)用jndi(java的命名和目录服务)方式 qbq2Bi'a
例子 HLDv{G'7
String jndi = "jdbc/db"; \[{8E}_"^
Context ctx = (Context) new InitialContext().lookup("java:comp/env"); ;}Lf
DataSource ds = (DataSource) ctx.lookup(jndi); u3 LoP_|
Connection cn = ds.getConnection(); }GURq#
多用于jsp中 <Rw2F?S~)n
2、执行sql语句 kYkA^Aq
1)用Statement来执行sql语句 +1cr6a
String sql; GOdWc9Ta!
Statement sm = cn.createStatement(); 2( GYk
sm.executeQuery(sql); // 执行数据查询语句(select) i`l;k~rP
sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)statement.close(); -
i2^ eZl
2)用PreparedStatement来执行sql语句 .$cX:"_Mk
String sql; &&<l}E
sql = "insert into user (id,name) values (?,?)"; Szu@{lpP@
PreparedStatement ps = cn.prepareStatement(sql); 8v4krz<Iq
ps.setInt(1,xxx); igTs[q=Ak
ps.setString(2,xxx); ^E\4`
... a] c03$f K
ResultSet rs = ps.executeQuery(); // 查询 ,/p+#|>C=
int c = ps.executeUpdate(); // 更新 Ou4hAm91s
,ov$`v
3、处理执行结果 OjffN'a+N
查询语句,返回记录集ResultSet -:_3N2U=+
更新语句,返回数字,表示该更新影响的记录数 b)Nd}6}<?
ResultSet的方法 Z:h'kgG &
1、next(),将游标往后移动一行,如果成功返回true;否则返回false \PN*gDmX
2、getInt("id")或getSting("name"),返回当前游标下某个字段的值 <Ffru?o4j
3+'vNc
4、释放连接 Bj6%mI42hl
cn.close();
z [[qrR
一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection )
4t%?wT
#s\yO~F-
可滚动、更新的记录集 `dX0F=Ag?
1、创建可滚动、更新的Statement 6W YVHG
Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY); Z"Lr5'}
该Statement取得的ResultSet就是可滚动的 4s|qxCks
2、创建PreparedStatement时指定参数 \anOOn@
PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); 3%9XJ]Qao
ResultSet.absolute(9000); |a7Kn/[`,
批量更新 L:&