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

[JAVA]java 数据库基本操作

t_y
级别: 经院硕士
发帖
2080
铜板
4671
人品值
2716
贡献值
3
交易币
0
好评度
2087
信誉值
0
金币
0
所在楼道
java 数据库基本操作 ,G!mO,DX  
1、java数据库操作基本流程 h\PybSW4s  
2、几个常用的重要技巧: wl:[Ad  
    可滚动、更新的记录集 1h#UM6  
    批量更新 MgUjB~)Y  
    事务处理 "?#O*x  
Q9NKQuSu  
java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接 -VhxnhS  
1、取得数据库连接 Y<9]7R(\;  
  1)用DriverManager取数据库连接 U# 7K^(E9  
  例子 XD$;K$_7  
    String className,url,uid,pwd; ^A' Bghy  
    className = "oracle.jdbc.driver.OracleDriver"; ;J&9 l >  
    url      = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr; <A@qN95m  
    uid      = "system"; i.G"21M  
    pwd      = "manager"; !+Us)'L  
    Class.forName(className); e]@R'oM?#`  
    Connection cn = DriverManager.getConnection(url,uid,pwd); w^wh|'u^_@  
  2)用jndi(java的命名和目录服务)方式 J^)=8cy  
  例子 "=vH,_"Ql  
    String jndi = "jdbc/db"; y?.l9  
    Context ctx = (Context) new InitialContext().lookup("java:comp/env"); NB?y/v  
    DataSource ds = (DataSource) ctx.lookup(jndi); z{ MO~d9  
    Connection cn = ds.getConnection(); yjj)+eJ(Q  
  多用于jsp中 $|pD}  
2、执行sql语句 )G=hgqy  
  1)用Statement来执行sql语句 w-?|6I}T  
  String sql;  ua] ?D2  
  Statement sm = cn.createStatement(); iK3gw<g  
  sm.executeQuery(sql); // 执行数据查询语句(select) !J-oGs\ u  
  sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)statement.close(); ~#y(]Xec2  
  2)用PreparedStatement来执行sql语句  V4q v7  
  String sql; &n-)Alx  
  sql  = "insert into user (id,name) values (?,?)"; e<1)KqG  
  PreparedStatement ps = cn.prepareStatement(sql); +je{%,*  
  ps.setInt(1,xxx); @]xH t&j  
  ps.setString(2,xxx); J{h?=vK  
  ... @'fWS^ ;&  
  ResultSet rs = ps.executeQuery(); // 查询 MZK%IC>  
  int c = ps.executeUpdate(); // 更新 ZAa:f:[#f  
  KW-g $Ma  
3、处理执行结果 pCt0[R;?  
  查询语句,返回记录集ResultSet Z2^B.r#  
  更新语句,返回数字,表示该更新影响的记录数 `=JGlN7  
  ResultSet的方法 6UnWtLE  
  1、next(),将游标往后移动一行,如果成功返回true;否则返回false O(CmdSk,  
  2、getInt("id")或getSting("name"),返回当前游标下某个字段的值 a?P$8NLr  
  Ze-MB0w  
4、释放连接 B96"|v$  
  cn.close(); XVWVY}  
  一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection YMD&U   
3~6,fTMz{  
可滚动、更新的记录集 *>8Y/3Y\B  
1、创建可滚动、更新的Statement =%ZR0cWPoI  
  Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY); 9G=HG={  
  该Statement取得的ResultSet就是可滚动的 CWW|?  
2、创建PreparedStatement时指定参数 b5.L== >  
  PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); F  uJ=]T  
  ResultSet.absolute(9000);  SJXP}JB_  
批量更新 Mv#\+|p 1x  
1、Statement tX 3y{W10"  
  Statement sm = cn.createStatement(); A&/VO$Y9wp  
  sm.addBatch(sql1); IBSoAL  
  sm.addBatch(sql2); mj _ V6`m4  
  ... 6V^KOG  
  sm.executeBatch() oES4X{,  
  一个Statement对象,可以执行多个sql语句以后,批量更新。这多个语句可以是delete、update、insert等或兼有 ST7Xgma-  
2、PreparedStatement Fb&WwGY,P  
  PreparedStatement ps = cn.preparedStatement(sql); m?_@.O@]  
  { A ^U`c'$  
  ps.setXXX(1,xxx); 1G62Qu$O  
  ... 4oywP^I  
  ps.addBatch(); t o2y#4'.  
  } UgAG2  
  ps.executeBatch(); vQhi2J'  
  一个PreparedStatement,可以把一个sql语句,变换参数多次执行,一次更新。 ruK, Z,3Q  
  fgEMn;  
事务的处理 ;/|3U7{c  
1、关闭Connection的自动提交 >C"QV `+  
  cn.setAutoCommit(false); /{HK0fd  
2、执行一系列sql语句 ):pFI/iC  
  要点:执行每一个新的sql语句前,上一次执行sql语句的Statement(或者PreparedStatemet)必须先close V07? sc<  
Statement sm ; #23m_w^L  
sm = cn.createStatement(insert into user...); 4 N{5i )  
sm.executeUpdate(); *^t7?f[  
sm.close(); vg ^&j0  
sm = cn.createStatement("insert into corp...); y&{ Z"+B5  
sm.executeUpdate(); d0CFMy6  
sm.close(); }&:F,q*  
3、提交 n9N '}z  
  cn.commit(); Y:'#jY*V  
4、如果发生异常,那么回滚 JBxizJBP  
  cn.rollback();
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

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

您目前还是游客,请 登录 或 注册
温馨提示:欢迎交流讨论,请勿纯表情、纯引用!
认证码:
验证问题:
10+5=?,请输入中文答案:十五