通过JDBC连接数据库(摘抄)

时间:2014-11-04 22:34:12   收藏:0   阅读:509

一、什么是JDBC的

  JDBC(Java Data Base Connectivity)是一套协议,是JAVA开发人员和数据库厂商达成的协议,也就是由Sun定义一组接口,由数据库厂商来实现,并规定了JAVA开发人员访问数据库所使用的方法的调用规范。

二、JDBC的组成

  JDBC有两部分组成:JDBC APIJDBC Driver.

   (一) JDBC API:是Sun提供给开发者的一组独立于数据库的API,JAVA开发人员对任何数据库的操作,都可以用这组API来进行。

  JDBC API主要位于JDK中的java.sql包中(之后扩展的内容位于javax.sql包中),主要包括(粉色代表接口,需驱动程序提供者来具体实现):

    (二)JDBC Driver由具体数据库开发商,通过实现了上述接口的编写而成的数据库驱动程序,当然,其中也会包括各个DB开发商自己扩展的一些类。各个驱动程序可以到各个数据库官网下载。为了使客户端程序独立于特定数据库驱动程序,JDBC规范建议开发者使用接口编程方式,即尽量使应用依赖java.sql 及javax.sql中的接口和类.具体结构图:

                     bubuko.com,布布扣

三、使用JDBC驱动连接数据库。

  1.首先,下载数据库驱动的Jar包,然后导入。

  2.使用如下代码连接到数据库:

 1 import java.sql.Connection;
 2 import java.sql.DriverManager;
 3 import java.sql.ResultSet;
 4 import java.sql.Statement;
 5 
 6 public class TestSQL {
 7 
 8     /**
 9      * @param args
10      * @throws Exception
11      */
12     public static void main(String[] args) throws Exception {
13         /*
14          * 通过Class.forName()方法来加载JDBC驱动程序(Driver),
15          * Driver类实例化时会初始化这个类的静态初始化部分,该静态部分,就会调用
16          * java.sql.DriverManager.registerDriver(new Driver());
17          */
18         Class.forName("com.mysql.jdbc.Driver").newInstance();
19         /*
20          * 数据库URL:jdbc:subprotocol:subname 形式, 
21          * 其实就是jdbc: + 数据库类型 + 主机名 + 端口号 + 所要使用的数据库名
22          */
23         String url = "jdbc:mysql://localhost:3306/mydatabase"; 
24         String userName = "root"; // 数据库的用户名
25         String password = "password"; // 数据库的密码
26         /*
27          * 调用上述已注册了相应JDBC驱动程序(Driver)的DriverManager,
28          * 通过URL,用户名,密码来获取相应的数据库连接(Connection)
29          */
30         Connection conn = DriverManager.getConnection(url, userName, password);
31         // 获取Statement 对象用于将 SQL 语句发送到数据库中。
32         Statement stmt = conn.createStatement();
33         // 执行SQL语句,获取结果集ResultSet
34         ResultSet rs = stmt.executeQuery("select * from person");
35         // 将获得的结果集输出
36         while(rs.next()) {
37             System.out.println(rs.getString(1));
38         }
39         // 关闭相应的资源
40         rs.close();
41         stmt.close();
42         conn.close();
43     }
44 }

注:①java.sql.DriverManager:从名字就可以看出是用于驱动程序管理的,它的主要责任是保留一个驱动程序的列表,并通过getConnection方法来给应用程序提供与所请求的URL相匹配的Driver(可能是由于同一个数据库的驱动程序可能是有几种不同的实现方式,但如果DriverManager中对一个URL有多个匹配的Driver,它是不是只选择第一个找到的呢?),并返回 Connection对象,如果找不到就会抛出一个异常,也就是这一句 Connection oConn = DriverManager.getConnection(url,userName,password)。

  ②Statement 对象用于将 SQL 语句发送到数据库中。实际上有三种 Statement 对象,它们都作为在给定连接上执行 SQL语句的包容器:Statement、PreparedStatement(它从 Statement 继承而来)和CallableStatement(它从 PreparedStatement 继承而来)。它们都专用于发送特定类型的 SQL 语句:Statement 对象用于执行不带参数的简单 SQL 语句;PreparedStatement 对象用于执行带或不带 IN参数的预编译 SQL 语句;CallableStatement 对象用于执行对数据库已存储过程的调用。Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和execute。使用哪一个方法由 SQL 语句所产生的内容决定。
  方法 executeQuery 用于产生单个结果集的语句,例如 SELECT 语句。
  方法 executeUpdate 用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQLDDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。
  方法 execute用于执行返回多个结果集、多个更新计数或二者组合的语句。因为多数程序员不会需要该高级功能,就不介绍了。

  ③事务处理:JDBC的事务处理简单,在执行多条更新语句后,加conn.commit()或conn.rollback()就可以了。

  Ⅰ.关闭Connection的自动提交
       conn.setAutoCommit(false);

    Ⅱ.执行一系列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();

  Ⅲ.提交
       cn.commit();
  Ⅳ.如果发生异常,回滚:
       cn.rollback();

原文:http://www.cnblogs.com/qiuck/p/4074836.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!