Jdbc的使用

来源:互联网 发布:小型物流仓储软件 编辑:程序博客网 时间:2024/06/18 04:55
 

Jdbc

一.JDBC是由Sun公司开发的针对数据库应用程序的API,由于JDBC是用Java语言编写的,所以JDBC同样拥有Java语言与生俱有的跨平台性,JDBC应用于数据库程序的开发使得程序开发更快捷、方便,更容易理解。

a)         1.优点:JDBC和ODBC十分相似,有利于软件开发人员理解

2.JDBC使软件开发人员从复杂的驱动程序编写工作中解脱出来,可以完全专注于业务逻辑的开发。

3.JDBC支持多种关系型数据库,使软件的可移植性增加

4.JDBC的API是面向对象的,软件开发人员可以将常用的方法进行二次封装,从而提高代码的重用性

b)缺点

–            通过JDBC访问数据库时速度将受到一定影响。

–        虽然JDBC API是面向对象的,但通过JDBC访问数据库依然是面向关系的。

–        JDBC提供了对不同数据库厂商的支持,将对数据源带来影响。

二.创建一个以JDBC连接数据库的程序

        1. 加载JDBC驱动程序

                     Class.forName(“com.mysql.jdbc.Driver”);
或者:Driver driv=new com.mysql.jdbc.Driver();
           DriverManager.registerDriver(driv);

2            提供JDBC连接的URL
String url="jdbc:mysql://localhost:3306/test";
String username="root";
String password="1234";

3.  创建数据库的连接
Connection con;
con=DriverManager.getConnection(url,username,password);

4.  4. 创建一个Statement 创建对象
Statement stat=con.createStatement();

5. 执行SQL语句
stat.executeUpdate(sql);//sql是insert、update和delete语句
stat.executeQuery(sql);//sql是select语句
stat.execute(sql); 

注::rs.next();//移动游标到第一条记录,如果没有到最后一条记录的后面,方法返回true,否则返回false。

ResultSet对象rs中有getXXX()方法,可从当前记录行中获取指定列的信息,可通过指定列索引号或列明两种方式指定要读取的列。

6.关闭JDBC对象
在操作完成以后要把所使用的JDBC对象全部关闭,以释放JDBC资源,关闭的顺序和声明顺序相反。

finally{
       if(rs!=null){
       try {
              rs.close();
           } catch (SQLException e) {
              e.printStackTrace();
           }
   }…
}

三.JDBC事物

所谓事务:是指一组原子操作(一组SQL语句执行)的工作单元

1创建JDBC的事务主要分以下步骤

A设置事务的提交方式为非自动提交:conn.setAutoCommit(false); 

B将需要添加事务的代码放在try、catch块中:
try {
              //需要添加事务的业务代码
} catch (SQLException e) {
              ...
}

C.在try块内添加提交操作,表示操作无异常,提交事务:conn.commit();  

D.在catch块内添加回滚事务,表示操作出现异常,撤消事务:conn.rollback();  

E设置事务提交方式为自动提交:conn.setAutoCommit(true); 

 

2. Statement的execute()等方法一次只能执行一条SQL语句,如果同时有多条SQL语句要执行的话,可以使用addBatch()方法将要执行的SQL语句加入进来,然后执行executeBatch()方法,这样就可以在一次方法调用中执行多条SQL语句,以提高执行效率。

3在JDBC中提供了java.sql.Blob和java.sql.Clob,两个类分别代表BLOB与CLOB数据。

BLOB(Binary Large Object):用于存储大量二进制数据。

CLOB(Character Large Object):用于存储大量文本数据。

可以使用PreparedStatement的setBinaryStream()、setCharacterStream()、setAsciiStream()、setUnicodeStream()等方法将其存入数据库

 

 

原创粉丝点击