java 数据库基本操作 w_6h
$"^x
1、java数据库操作基本流程 H"m^u6Cmy-
2、几个常用的重要技巧: B|#"dhT
可滚动、更新的记录集 ;l"z4>kt7
批量更新 7u0!Q\
事务处理 evq*&.6\
j`(o\Fd )
java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接 Nn+leM
1、取得数据库连接 iYR8sg[' #
1)用DriverManager取数据库连接 PbCXcs
例子 8
"|')f#
String className,url,uid,pwd; s<tdn[d
className = "oracle.jdbc.driver.OracleDriver"; yo3'\I
url = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr; *SLv$A
uid = "system"; FSC74N/
pwd = "manager"; s@Y0"
Class.forName(className); a,!c6'QE
Connection cn = DriverManager.getConnection(url,uid,pwd); d-lC|5U%
2)用jndi(java的命名和目录服务)方式 Za5*HCo
例子 Gw$U0 HA[,
String jndi = "jdbc/db"; c)+IX;q-C
Context ctx = (Context) new InitialContext().lookup("java:comp/env"); 0Kq\ oMn
DataSource ds = (DataSource) ctx.lookup(jndi); T-uI CMEf
Connection cn = ds.getConnection(); 5_#wOz0u$
多用于jsp中 Y ~xcJH
2、执行sql语句 ]=7}Y%6
1)用Statement来执行sql语句 l\JoWL
String sql; )FYz*:f>&
Statement sm = cn.createStatement(); Jr|"` f%V
sm.executeQuery(sql); // 执行数据查询语句(select) )lE]DG!
sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)statement.close(); `#E1FB2M
2)用PreparedStatement来执行sql语句 z1*8 5?
String sql; *q\Ve)E}
sql = "insert into user (id,name) values (?,?)"; FlttqQQdf
PreparedStatement ps = cn.prepareStatement(sql); /V^Gn;
ps.setInt(1,xxx); b~z1%?
ps.setString(2,xxx); D`V03}\-
... \GEFhM4)
ResultSet rs = ps.executeQuery(); // 查询 -$>R;L
int c = ps.executeUpdate(); // 更新 LY-fp+
?l
&S:`
L
3、处理执行结果 ?v\A&d
查询语句,返回记录集ResultSet IR(qjm\V
更新语句,返回数字,表示该更新影响的记录数 Lp.,:z7
ResultSet的方法 $<OX\f%
1、next(),将游标往后移动一行,如果成功返回true;否则返回false GFB(c
2、getInt("id")或getSting("name"),返回当前游标下某个字段的值 TW"
TgOfd
n>"0y^v
4、释放连接 5(]=?$$*t
cn.close(); M| :wC
一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection _Y?p =;
nn5tOV}QE
可滚动、更新的记录集 eF823cH2x_
1、创建可滚动、更新的Statement F2saGpGH
Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY); R%=u<O
该Statement取得的ResultSet就是可滚动的 1kEXTs=,
2、创建PreparedStatement时指定参数 5B<