java 数据库基本操作 _LFZ 0
1、java数据库操作基本流程 .:*V
CDOM
2、几个常用的重要技巧: nfq
可滚动、更新的记录集 A}FEM[2
批量更新 ^*
^te+N
事务处理 {%'(IJ|5z
]YQlCx`
java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接 r
Ka7[/
1、取得数据库连接 x1]^].#Eo
1)用DriverManager取数据库连接 0"kNn5
例子 C#`eN{%.YT
String className,url,uid,pwd; uR|Jn)/m(
className = "oracle.jdbc.driver.OracleDriver"; Y{B|*[xM
url = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr; @O5-w
uid = "system"; G7DEavtr
pwd = "manager"; .ZFs+8qU>
Class.forName(className); n@mWBUM
Connection cn = DriverManager.getConnection(url,uid,pwd); }>=k!l{
2)用jndi(java的命名和目录服务)方式 {^1GHU
例子 \Q|1I
String jndi = "jdbc/db"; Bl2y~fCA
Context ctx = (Context) new InitialContext().lookup("java:comp/env");
5 .
5
DataSource ds = (DataSource) ctx.lookup(jndi); @>_`g=
Connection cn = ds.getConnection(); h )"PPI
多用于jsp中 @H"~/ m_o
2、执行sql语句 b !J21cg<L
1)用Statement来执行sql语句 j~(rG^T
String sql; G)';ucs:,
Statement sm = cn.createStatement(); <YP>c
sm.executeQuery(sql); // 执行数据查询语句(select) scCOiK)
sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)statement.close(); p)N=
2)用PreparedStatement来执行sql语句 8xs[{?|:
String sql; AdesR-e$R
sql = "insert into user (id,name) values (?,?)"; S
"R]i
PreparedStatement ps = cn.prepareStatement(sql); PGsXB"k<8
ps.setInt(1,xxx); iE, I\TY[
ps.setString(2,xxx); 9; H R
... r]sv50Fy
ResultSet rs = ps.executeQuery(); // 查询 H2l/9+
int c = ps.executeUpdate(); // 更新 ~z$vF
iv2did4
3、处理执行结果 TggM/@k
查询语句,返回记录集ResultSet )C5<puh
更新语句,返回数字,表示该更新影响的记录数 m:59f9WXA
ResultSet的方法 :D8V*F6P
1、next(),将游标往后移动一行,如果成功返回true;否则返回false ='q:Io?T
2、getInt("id")或getSting("name"),返回当前游标下某个字段的值 ykH?;Xu
8C#R
4、释放连接 jwgXq(
cn.close(); 7c1xB.g
一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection Gy
hoo'<
r`pg`ChHv
可滚动、更新的记录集 fHCLsI
1、创建可滚动、更新的Statement 5 e~\o}]
Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY); #:_qo
该Statement取得的ResultSet就是可滚动的 UM(tM9
2、创建PreparedStatement时指定参数 r j#K5/df
PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); vcy}ZqWBO
ResultSet.absolute(9000); ,di'279|
批量更新 ~Jrtm7
1、Statement ]y>)es1
Statement sm = cn.createStatement(); -Mx"ox
sm.addBatch(sql1); + pZ, RW.D
sm.addBatch(sql2); q{HfT
d
... $NC1>83
sm.executeBatch() X}Bo[YoY$
一个Statement对象,可以执行多个sql语句以后,批量更新。这多个语句可以是delete、update、insert等或兼有 iY1%"x
2、PreparedStatement @cA`del
PreparedStatement ps = cn.preparedStatement(sql); d!5C$C/x
{ U8KB@E
ps.setXXX(1,xxx); ATp7:Q
... l69&-Nyg
ps.addBatch(); dR<