社区应用 最新帖子 精华区 社区服务 会员列表 统计排行 社区论坛任务 迷你宠物
  • 6965阅读
  • 1回复

[JAVA]java 数据库基本操作

t_y
级别: 经院硕士
发帖
2080
铜板
4671
人品值
2716
贡献值
3
交易币
0
好评度
2087
信誉值
0
金币
0
所在楼道
java 数据库基本操作 \0;(VLN'U  
1、java数据库操作基本流程 I+ l%Sn#\  
2、几个常用的重要技巧: ^>&k]T`  
    可滚动、更新的记录集 NUJ~YWO;  
    批量更新 Wl"0m1G  
    事务处理 mdih-u(T|  
ITJ q  
java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接 jn%kG ~]'Q  
1、取得数据库连接 k_|^kdWJ  
  1)用DriverManager取数据库连接 -cF'2Sfr  
  例子 W_M'.1 t  
    String className,url,uid,pwd; zoDZZ%{  
    className = "oracle.jdbc.driver.OracleDriver"; [U =Uo*  
    url      = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr; 0'Z\O   
    uid      = "system"; SkNre$>t{  
    pwd      = "manager"; j=+"Qz/hr_  
    Class.forName(className); SS|z*h Z  
    Connection cn = DriverManager.getConnection(url,uid,pwd); ;oO v/3  
  2)用jndi(java的命名和目录服务)方式 }u{gR:lZ  
  例子 N^0uit  
    String jndi = "jdbc/db"; i8X`HbmN  
    Context ctx = (Context) new InitialContext().lookup("java:comp/env"); CG]Sj*SA~  
    DataSource ds = (DataSource) ctx.lookup(jndi); :,pSWfK H  
    Connection cn = ds.getConnection(); @ez Tbc3  
  多用于jsp中 ;$j7H&UNQj  
2、执行sql语句 #C*8X+._y  
  1)用Statement来执行sql语句 Yepe=s+9  
  String sql; ?kw&=T !  
  Statement sm = cn.createStatement(); al9.}  
  sm.executeQuery(sql); // 执行数据查询语句(select) \(UKd v  
  sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)statement.close(); L #[]I,  
  2)用PreparedStatement来执行sql语句 Z{NC9  
  String sql; VObrlOkp  
  sql  = "insert into user (id,name) values (?,?)"; neF]=uCWnT  
  PreparedStatement ps = cn.prepareStatement(sql); bF}V4"d,B3  
  ps.setInt(1,xxx); <3X7T6_:@  
  ps.setString(2,xxx); Rhzn/\)|  
  ... T5Eseesp  
  ResultSet rs = ps.executeQuery(); // 查询 O%!5<8Xrb  
  int c = ps.executeUpdate(); // 更新 u'A#%}3  
  9a$56GnW1  
3、处理执行结果 pY8q=Kl  
  查询语句,返回记录集ResultSet KGHq rc  
  更新语句,返回数字,表示该更新影响的记录数 V:NI4dv/R  
  ResultSet的方法 XJ0 {  
  1、next(),将游标往后移动一行,如果成功返回true;否则返回false FE7)E.U  
  2、getInt("id")或getSting("name"),返回当前游标下某个字段的值 nQK|n^AU/  
  hv$yV%.`  
4、释放连接 E .6HpIx  
  cn.close(); 4A`NJ  
  一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection -|yb[~3  
#!J(4tXny  
可滚动、更新的记录集 ^cvl:HOog  
1、创建可滚动、更新的Statement 'fwU]Hm  
  Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY); &sVvWNO#2  
  该Statement取得的ResultSet就是可滚动的 {Z;t ^:s#  
2、创建PreparedStatement时指定参数  @gGRm  
  PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); 6~meM@  
  ResultSet.absolute(9000);  'WyTI^K9  
批量更新 o/cjXun*  
1、Statement ^,Ydr~|T  
  Statement sm = cn.createStatement(); 8 (jUe  
  sm.addBatch(sql1); 4B+9z^oQ  
  sm.addBatch(sql2); CDy^UQb  
  ... c>bq%}  
  sm.executeBatch() 4IdT'  
  一个Statement对象,可以执行多个sql语句以后,批量更新。这多个语句可以是delete、update、insert等或兼有 vm23U^VJ  
2、PreparedStatement O  OFVnu  
  PreparedStatement ps = cn.preparedStatement(sql); >n5:1.g  
  { xom<P+M!|  
  ps.setXXX(1,xxx); {1 J&xoV"  
  ... _#$9 y1bd  
  ps.addBatch(); bucR">_p  
  } 7Ob*Yv=[  
  ps.executeBatch(); ;+"f  
  一个PreparedStatement,可以把一个sql语句,变换参数多次执行,一次更新。 }S_oH9A  
  w[Gh+L30=5  
事务的处理 mZk0@C&:6  
1、关闭Connection的自动提交 1m<RwI3s  
  cn.setAutoCommit(false); %5Kq^]q;Y  
2、执行一系列sql语句 4R +.N  
  要点:执行每一个新的sql语句前,上一次执行sql语句的Statement(或者PreparedStatemet)必须先close v *hRz;  
Statement sm ; c/W=$3  
sm = cn.createStatement(insert into user...); RWq{Ff}Hk  
sm.executeUpdate(); /G{_7cb  
sm.close(); JwnAW}=  
sm = cn.createStatement("insert into corp...); 3M*Bwt;F_  
sm.executeUpdate(); }w-wSkl1  
sm.close(); G1T^a>tj4  
3、提交 Q'apG)0I  
  cn.commit(); !v#xb3"/  
4、如果发生异常,那么回滚 3. WF}8  
  cn.rollback();
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
出来混 迟早都要还
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 1 发表于: 2007-10-09
好久没用过JDBC连数据库了  习惯Hibernate ibatis和Toplink
描述
快速回复

您目前还是游客,请 登录注册
欢迎提供真实交流,考虑发帖者的感受
认证码:
验证问题:
10+5=?,请输入中文答案:十五