JAVA数据库的根基操纵
当前位置:以往代写 > JAVA 教程 >JAVA数据库的根基操纵
2019-06-14

JAVA数据库的根基操纵

JAVA数据库的根基操纵

副标题#e#

java数据库根基操纵

1、java数据库操纵根基流程

2、几个常用的重要能力:

可转动、更新的记录集

批量更新

事务处理惩罚

java数据库操纵根基流程:取得数据库毗连 – 执行sql语句 – 处理惩罚执行功效 – 释放数据库毗连

1、取得数据库毗连

1)用DriverManager取数据库毗连

例子

String className,url,uid,pwd;
  className = "oracle.jdbc.driver.OracleDriver";
  url    = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr;
  uid    = "system";
  pwd    = "manager";
  Class.forName(className);
  Connection cn = DriverManager.getConnection(url,uid,pwd);

2)用jndi(java的定名和目次处事)方法

例子

String jndi = "jdbc/db";
  Context ctx = (Context) new InitialContext().lookup("java:comp/env");
  DataSource ds = (DataSource) ctx.lookup(jndi);
  Connection cn = ds.getConnection();

多用于jsp中

2、执行sql语句

1)用Statement来执行sql语句

String sql;
 Statement sm = cn.createStatement();
 sm.executeQuery(sql);// 执行数据查询语句(select)
 sm.executeUpdate(sql);// 执行数据更新语句(delete、update、insert、drop等)statement.close();

2)用PreparedStatement来执行sql语句

String sql;
 sql = "insert into user (id,name) values (?,?)";
 PreparedStatement ps = cn.prepareStatement(sql);
 ps.setInt(1,xxx);
 ps.setString(2,xxx);
 ...
 ResultSet rs = ps.executeQuery();// 查询
 int c = ps.executeUpdate();// 更新

3、处理惩罚执行功效

查询语句,返回记录集ResultSet

更新语句,返回数字,暗示该更新影响的记录数

ResultSet的要领

1、next(),将游标往后移动一行,假如乐成返回true;不然返回false

2、getInt("id")或getSting("name"),返回当前游标下某个字段的值

4、释放毗连

cn.close();

一般,先封锁ResultSet,然后封锁Statement(可能PreparedStatement);最后封锁Connection


#p#副标题#e#

可转动、更新的记录集

1、建设可转动、更新的Statement

Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY);

该Statement取得的ResultSet就是可转动的

2、建设PreparedStatement时指定参数

PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

ResultSet.absolute(9000); 

批量更新

1、Statement

Statement sm = cn.createStatement();
 sm.addBatch(sql1);
 sm.addBatch(sql2);
 ...
 sm.executeBatch()

一个Statement工具,可以执行多个sql语句今后,批量更新。这多个语句可以是delete、update、insert等或兼有

2、PreparedStatement

PreparedStatement ps = cn.preparedStatement(sql);
 {
 ps.setXXX(1,xxx);
 ...
 ps.addBatch();
 }
 ps.executeBatch();

一个PreparedStatement,可以把一个sql语句,调动参数多次执行,一次更新。

事务的处理惩罚

1、封锁Connection的自动提交

cn.setAutoCommit(false);

2、执行一系列sql语句

要点:执行每一个新的sql语句前,上一次执行sql语句的Statement(可能PreparedStatemet)必需先close

Statement sm ;
sm = cn.createStatement(insert into user...);
sm.executeUpdate();
sm.close();
sm = cn.createStatement("insert into corp...);
sm.executeUpdate();
sm.close();

3、提交

cn.commit();

4、假如产生异常,那么回滚

cn.rollback();

    关键字:

在线提交作业