码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2014-11-04 22:34:54      阅读:333      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   io   color   ar   os   使用   java   

一、什么是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包中),主要包括(粉色代表接口,需驱动程序提供者来具体实现):

    • DriverManager:负责加载各种不同驱动程序(Driver),并根据不同的请求,向调用者返回相应的数据库连接(Connection)。
    • Driver:驱动程序,会将自身加载到DriverManager中去,并处理相应的请求并返回相应的数据库连接(Connection)。
    • Connection:数据库连接,负责与进行数据库间通讯,SQL执行以及事务处理都是在某个特定Connection环境中进行的。可以产生用以执行SQL的Statement。
    • Statement:用以执行SQL查询和更新(针对静态SQL语句和单次执行)。
    • PreparedStatement:用以执行包含动态参数的SQL查询和更新(在服务器端编译,允许重复执行以提高效率)。
    • CallableStatement:用以调用数据库中的存储过程
    • SQLException:代表在数据库连接的创建和关闭和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();

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

标签:des   style   blog   io   color   ar   os   使用   java   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!