JDBC介绍

1.DriverManager用来建立和数据库的链接以及管理JDBC驱动程序

driverManager的常用方法

方法描述
registerDriver(Driver driver)在DerverManager中注册JDBC驱动程序getConnection(String url,String user,String pwd)建立和数据库的连接,返回Connection对象setLoginTime(int seconds)设定等待数据库连接的最长时间setLogWriter(PrintWriter out)设定输出数据库日志的PrintWriter对象

2.Connection代表Java程序和数据库的连接

Connection的常用方法

方法描述
getMetaData() 获取一个 DatabaseMetaData 对象,该对象包含关于此 Connection 对象所连接的数据库的元数据。例如当前数据库连接的用户名,数据库的最大连接数,以及数据库的版本等。createStatement()创建并返回Statement对象prepareStatement(String sql)创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。

3.Statement用来执行静态的SQL语句。例如:对于insert,update和delete语句,可以调用executeUpdate(String sql)的方法;对于select语句,可以调用executeQuery(String sql方法),这个方法返回一个ResultSet对象。

例如:

String sql="select id,name,title,price from books where name='tom' and price=40";

ResultSet rs=stmt.executeQuery(sql);//stmt为Statement对象

4.PreparedStatement用来执行动态的SQL语句。

例如:

String sql="select id,name,title,price from books where name=? and price=?";

在这种情况,用PreparedStatement比Statement更方便,因为PreparedStatement允许sql语句中包含参数。

PreparedStatement具体使用如下:

(1)生产PreparedStatement对象。例如:SQL语句中name的值和price的值都用"?"来替代,他们表示两个可以被替换的参数:

String sql="select id,name,title,price from books where name=? and price=?";

PrepareStatement prepStmt=conn.prepareStatement(sql);

(2)调用PreparedStatement的setxxx方法,给参数赋值:

prepStmt.setString(1,"tome");

prepStmt.setString(2,40);

(3)执行SQL语句:

ResultSet=prepStmt.executeQuery();

5.ResultSet表示select语句查询得到的记录集合。

(1)ResultSet的记录行号从1开始,一个Statement对象在同一时刻只能打开一个ResultSet对象。调用ResultSet的next()方法可以使游标定位到下一条记录。调用ResultSet的getxxx()方法可以取得某个字段的值。

(2)ResultSet既可以通过字段的序号来指定字段,也可以通过字段的名字来指定字段。

例如:

String sql="select id,name,title,price from books where name='tome' and price=40";

ResultSet rs=stmt.executeQuery(sql);

如果要访问id字段,可以用

rs.getString(1); 或者rs.getString("id");

如果要取出ResultSet中所有记录,可以采用下面的循环语句:

while(rs.next()){

String col1=rs.getString(1);

String col2=rs.getString(2);

String col3=ts.getString(3);

float col4=rs.getFloat(4);

}

6.总结介绍JDBC访问数据库的步骤

(1)装载并注册数据库JDBC驱动程序,(其中JDBC-ODBC Driver是在JDK中自带的,默认已经注册,所以不需要再注册)

//装载JdbcOdbcDriver.class(只需要装载,不需要注册)

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

//装载并注册SQLServerDriver

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

java.sql.DriverManager.registerDriver(new com.microsoft.jdbc.sqlserver.SQLServerDriver());

//装载并注册OracleDriver

Class.forName("oracle.jdbc.driver.OracleDriver");

java.sql.DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

//装载并注册MySQLDriver

Class.forName("com.mysql.jdbc.Driver");

java.sql.DriverManager.registerDriver(new com.mysql.jdbc.Driver());//这个注册不上必要的

说明:

对于mysql的驱动程序类com.mysql.jdbc.Driver,在JVM加载这个类时,会执行以下静态代码

static{

  try{

    java.sql.DriverManager.registerDriver(new Driver());

  }catch(){

    throw new RuntimeException("..");

  }

  ....

}

所以程序中只要通过Class.forName方法加载mysql driver类即可,可以不需要再注册。

(2)建立与数据库的连接

Connection conn=java.sql.DriverManager.getConnection(url,user,password);

mysql: url="jdbc:mysql://localhost:3306/dbName";

(3)创建Statement对象,准备调用SQL语句

Statement stmt=conn.createStatement();

(4)调用SQL语句:

String sql="select id,name,title,price from books where name='tom' and price=40";

ResultSet rs=stmt.executeQuery(sql);

(5)访问ResultSet中的记录集    

  (6)一次关闭 ResultSet,Statement和Connection对象:

rs.close();

stmt.close();

conn.close();

 7.事务处理

(1)在Connection类中提供了3个控制事物的方法:

setAutoCommit(boolean autoCommit);设置是否自动提交事物

commit();提交事物

rollback();回滚事物

(2)在DJBC API中,默认情况下为自动提交事物。可以通过调用setAutoCommit(false)来禁止提交事物。

try{

con.java.sql.DriverManager.getConnection(dbUrl,user,dbPwd);

//禁止自动提交,设置回滚点

con.setAutoCommit(false);

stmt=con.createStatement();

//数据库更新操作1

stmt.executeUpdate("update account set money=money-1000 where name='zhangsan'");

//数据库更新操作2

stmt.executeUpdate("update account set money=money+1000 where name='lisi'");

//事物提交

con.commit();

}catch(Exception e){

e.printStackTrace();

//操作不成功事物回滚

con.rollback();

}finally{

stmt.close();

con.close();

}

相关推荐