您的位置:首页 > 博客中心 > 数据库 >

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

时间:2022-03-14 01:59

一、什么是JDBC的

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

二、JDBC的组成

  JDBC有两部分组成:JDBC API和JDBC Driver.

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

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

  • 三、使用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();

本类排行

今日推荐

热门手游