java 数据库基本操作 BDq%'~/^
1、java数据库操作基本流程 R(2tlZ
2、几个常用的重要技巧: WpF2)R}G=
可滚动、更新的记录集 pcYG~pZ9
批量更新 IkBei&4F`
事务处理 Pm
lx8@D
nX(+s*Y+w
java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接 %;e/7`>Ma
1、取得数据库连接 )^4\,u\@
1)用DriverManager取数据库连接 T(e!_VY|m
例子 3T"j)R_=l
String className,url,uid,pwd; > `n,S
className = "oracle.jdbc.driver.OracleDriver"; m\$\ 09
url = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr; &m|wH4\
uid = "system"; AT9q3
pwd = "manager"; R$[#+X!
Class.forName(className); i|T)p_y(!a
Connection cn = DriverManager.getConnection(url,uid,pwd); r.#t63Rb
2)用jndi(java的命名和目录服务)方式 5$wpL(:R(
例子 :|Ad:fEs
String jndi = "jdbc/db"; e
' 2F#
Context ctx = (Context) new InitialContext().lookup("java:comp/env"); v=_6XF
DataSource ds = (DataSource) ctx.lookup(jndi); *Txl+zTY
Connection cn = ds.getConnection(); !eEHmRgg4
多用于jsp中 |`lzfe
2、执行sql语句 3=Cc.a/3
1)用Statement来执行sql语句 oXxCXO,q
String sql; &e;=cAXG
Statement sm = cn.createStatement(); F{eU";D
sm.executeQuery(sql); // 执行数据查询语句(select) G`\f
sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)statement.close(); Xb{
[c+.
2)用PreparedStatement来执行sql语句 (xVsDAp=@
String sql; |P -8HlOr
sql = "insert into user (id,name) values (?,?)"; #$c Rkw
PreparedStatement ps = cn.prepareStatement(sql); %kB8'a3
ps.setInt(1,xxx); 0JlZs]
ps.setString(2,xxx); r :F
... /C>wd
ResultSet rs = ps.executeQuery(); // 查询 COW}o~3-4
int c = ps.executeUpdate(); // 更新 MxY/`9>E|+
~.UrL(l=
3、处理执行结果 4eikLRD,
查询语句,返回记录集ResultSet 5dB'&8DX
更新语句,返回数字,表示该更新影响的记录数 <5NF;
ResultSet的方法 \
C+(~9@|
1、next(),将游标往后移动一行,如果成功返回true;否则返回false #a`a$A
2、getInt("id")或getSting("name"),返回当前游标下某个字段的值 0KGY\,ae:;
(N&lHLy
4、释放连接 ,`gl&iB
cn.close(); d/bEt&
一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection mnmP<<8C,
=$nB/K,8AX
可滚动、更新的记录集 .G+Pe'4a
1、创建可滚动、更新的Statement M@?xa/E64
Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY); p;W.lcO`0
该Statement取得的ResultSet就是可滚动的 DdVF,
2、创建PreparedStatement时指定参数 kAu+zX>S+
PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); pek%08VSEU
ResultSet.absolute(9000); wi4=OU1L)a
批量更新 );Z1a&K5k
1、Statement Gi "941zVl
Statement sm = cn.createStatement(); <