java 数据库基本操作 .(;k]UP
1、java数据库操作基本流程 $if(`8
2、几个常用的重要技巧: zy@
#R ;
可滚动、更新的记录集 & A9psc(,&
批量更新 _F^|n}Qbj
事务处理 6@o_MtI
Jb $PlOQ
java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接 OAw/
1、取得数据库连接 Q*$x!q
1)用DriverManager取数据库连接 /[nt=#+
例子 lKIHBi
String className,url,uid,pwd; 9
J5Z'd_
className = "oracle.jdbc.driver.OracleDriver"; f{ S)wE>;
url = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr; 1t!Mg{&e[x
uid = "system"; 2T?t[;-
pwd = "manager"; u[ 2R>=
Class.forName(className); (U/[i.r5Cj
Connection cn = DriverManager.getConnection(url,uid,pwd); !^q<)!9<EO
2)用jndi(java的命名和目录服务)方式 mMT7`r;l
例子 -lSm:O@'
String jndi = "jdbc/db"; 9'//_ A,
Context ctx = (Context) new InitialContext().lookup("java:comp/env"); ZWf{!L,@Z
DataSource ds = (DataSource) ctx.lookup(jndi); .(9IAAwKn
Connection cn = ds.getConnection();
e%'9oAz
多用于jsp中 cx_"{`+e
2、执行sql语句 tvRa.3
1)用Statement来执行sql语句 0e vxRcrzz
String sql; Kt}dTpVFr
Statement sm = cn.createStatement(); pJ_Z[}d)c
sm.executeQuery(sql); // 执行数据查询语句(select) 4B]8Mp~\aL
sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)statement.close(); #C%<g:F8
2)用PreparedStatement来执行sql语句 o/)\Q>IY
String sql; (a7IxW
sql = "insert into user (id,name) values (?,?)"; w #(XiH*
PreparedStatement ps = cn.prepareStatement(sql); '{( n1es
ps.setInt(1,xxx); !c1
E
ps.setString(2,xxx); ew?UHV
... AW> P\>{RE
ResultSet rs = ps.executeQuery(); // 查询 NV9= ~cx
int c = ps.executeUpdate(); // 更新 C
UBcU
*+p'CfsSka
3、处理执行结果 d2X#_(+d
查询语句,返回记录集ResultSet V=(4
c
更新语句,返回数字,表示该更新影响的记录数
]g?G0m
ResultSet的方法 8n~@Rj5
1、next(),将游标往后移动一行,如果成功返回true;否则返回false ,5r 2!d
2、getInt("id")或getSting("name"),返回当前游标下某个字段的值 D"1ciO8^I]
]]%C\Ryy}
4、释放连接 0TA/ExJ-LT
cn.close(); nsgNIE{>gO
一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection Vp5qul%
I8^z\ef&
可滚动、更新的记录集 j-{WPJa4\
1、创建可滚动、更新的Statement T/S-}|fhQ
Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY); ,u]kZ ]
该Statement取得的ResultSet就是可滚动的 m@HU;J\I
2、创建PreparedStatement时指定参数 &5d>jEaB}
PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); G2L7_?/m
ResultSet.absolute(9000); a.8 nWs^
批量更新 cW&OVNj
1、Statement Za}91z"
Statement sm = cn.createStatement(); TS3 00F
sm.addBatch(sql1); k,v.U8
sm.addBatch(sql2); l^0
<a<P
... :syR4A WM
sm.executeBatch() \D}/tz5~B
一个Statement对象,可以执行多个sql语句以后,批量更新。这多个语句可以是delete、update、insert等或兼有 c1n? @L
2、PreparedStatement 7CG_UB
PreparedStatement ps = cn.preparedStatement(sql); |Z2_1(
ku
{ Ld`~^<