java 数据库基本操作 $y=sT({VVe
1、java数据库操作基本流程 N|q:wyS|
2、几个常用的重要技巧: =}7wpTc,
可滚动、更新的记录集 @N.W#<IG
批量更新 zE.4e&m%Z?
事务处理 fx.FHhVu
UeE& 8{=d
java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接 9>le-}~
1、取得数据库连接 'ESy>wA{y<
1)用DriverManager取数据库连接 )+w0NhJw
例子 r3ZY`zf
String className,url,uid,pwd; #eE:hiu<v
className = "oracle.jdbc.driver.OracleDriver"; u4o%qK
url = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr; #:Cr'U
uid = "system"; 0y'34}
pwd = "manager"; y>8!qVX
Class.forName(className); Iu0K#.s_
Connection cn = DriverManager.getConnection(url,uid,pwd); LEVNywk[
2)用jndi(java的命名和目录服务)方式 wb 4 4
例子 ZH:#~Zyj
String jndi = "jdbc/db"; 21 cB_"
Context ctx = (Context) new InitialContext().lookup("java:comp/env"); z!Jce}mx
DataSource ds = (DataSource) ctx.lookup(jndi); 3SQ
5C'E
Connection cn = ds.getConnection(); )X\3bPDJR
多用于jsp中
wSV[nK
2、执行sql语句 xKsn);].`
1)用Statement来执行sql语句 X?rJO~5
String sql; XrSqUD
Statement sm = cn.createStatement(); oB9Fas!N
sm.executeQuery(sql); // 执行数据查询语句(select) !9iVe7V
sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)statement.close(); ,`+y4Z6`W2
2)用PreparedStatement来执行sql语句 RW>Z~Nj
String sql; ? dSrY
sql = "insert into user (id,name) values (?,?)"; 2%vwC]A
PreparedStatement ps = cn.prepareStatement(sql); @u6#Tvxy[
ps.setInt(1,xxx); "hog A5=
ps.setString(2,xxx); g;]2'Rj
... aDza"Ln
ResultSet rs = ps.executeQuery(); // 查询 94nvh:n
int c = ps.executeUpdate(); // 更新 m!;mEBL{
@ n;WVG
3、处理执行结果 ~n"V0!:'4
查询语句,返回记录集ResultSet IRo[|&c
更新语句,返回数字,表示该更新影响的记录数 0]>p|m9K^<
ResultSet的方法 V^L;Nw5h
1、next(),将游标往后移动一行,如果成功返回true;否则返回false HdWghxz?)
2、getInt("id")或getSting("name"),返回当前游标下某个字段的值 =#%e'\)a
aKCCFHq t!
4、释放连接 w #(XiH*
cn.close(); 8Qu].nKe
一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection ew?UHV
N@)4H2_u \
可滚动、更新的记录集 Y]8l]l 1
1、创建可滚动、更新的Statement Vg[U4,
Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY); , is
.{y
该Statement取得的ResultSet就是可滚动的 FLy|+4D_%4
2、创建PreparedStatement时指定参数 Y,E:?
PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); AS;{O>}54
ResultSet.absolute(9000); `m'2RNSc+#
批量更新 @Gn9x(?J
1、Statement m@HU;J\I
Statement sm = cn.createStatement(); XTW/3pB
sm.addBatch(sql1); y'pG'"U]_
sm.addBatch(sql2); U?|s/U
... (Z `Y
sm.executeBatch() N;[w`d'#
一个Statement对象,可以执行多个sql语句以后,批量更新。这多个语句可以是delete、update、insert等或兼有 5&