zoukankan      html  css  js  c++  java
  • 建立JDBC数据库连接实例解析

      连接(Connection)是一个代表与数据库进行的程序连接的对象。通过连接,可以执行SQL语句、返回数据库操作结果等。

        创建指定数据库的URL

        要建立与数据库的连接,首先要创建指定数据库的URL。连接通常是通过数据库的URL对象,利用DriverManager的getConnection方法建立的。数据库URL对象与网络资源的统一资源定位类似,其构成格式如下:    jdbc:subProtocol:subName://hostname:port; DatabaseName=XXX

        其中:
        jdbc表示当前通过Java的数据库连接进行数据库访问。
        subProtocol表示通过某种驱动程序支持的数据库连接机制。
        subName表示在当前连接机制下的具体名称。
        hostname表示主机名。
        port表示相应的连接端口。
        DatabaseName是要连接的数据库的名称。

        按照上述构造规则,可以构造如下类型的数据库URL:
        jdbc:microsoft:sqlserver ://localhost:1433;DatabaseName=test

        该数据库URL表示利用Microsoft提供的机制,选择名称为sqlserver的驱动通过1433端口访问本机上的test数据库。

        加载驱动程序

        DriverManager 类包含一列 Driver 类,它们已通过调用方法DriverManager. registerDriver 对自己进行了注册。所有 Driver类都必须包含一个静态部分。它创建该类的实例,然后在加载该实例时 DriverManager 类进行注册。这样,用户在正常情况下将不会直接调用 DriverManager.registerDriver,而是在加载驱动程序时由驱动程序自动调用。

        在JDBC中,通常有两种加载驱动程序的方式。
        一种是将驱动程序添加到 java.lang.System 的属性 jdbc.drivers 中。这是一个由 DriverManager 类加载的驱动程序类名的列表,用冒号分隔。在JDBC的java.sql. DriverManager类初始化时,在JVM的系统属性中搜索jdbc.drivers字段的内容。如果存在以冒号分隔的驱动程序名称,则DriverManager类加载相应的驱动程序。
        另一种方式是在程序中利用Class.forName()方法加载指定的驱动程序,如:
        Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver")

        这将显式地加载驱动程序类。由于这与外部设置无关,因此推荐使用这种加载驱动程序的方法。

        在以上两种情况中,新加载的 Driver 类都要通过调用 DriverManager.registerDriver类进行自我注册。

         实例:建立数据库连接

        加载 Driver 类并在 DriverManager 类中注册后,它们即可用来与数据库建立连接。当调用 DriverManager.getConnection 方法发出连接请求时,DriverManager 将检查每个驱动程序,查看它是否可以建立连接。创建数据库连接时需要提供数据库的URL和驱动类型,并提供访问数据库的用户名和密码。如果有多个 JDBC 驱动程序可以与给定的 URL 连接,DriverManager 将轮流在每个驱动程序上调用方法 Driver.connect,并向它们传递用户开始传递给方法 DriverManager.getConnection 的 URL 对驱动程序进行测试,然后连接第一个可以成功连接到给定 URL 的驱动程序。示例13-1是一个用来与SQL Server数据库建立连接的例子。
        【程序源代码】

    1	// ==================== Program Description ==========================
    2	// 程序名称:示例13-1 : DBConnection.java
    3	// 程序目的:建立数据库连接
    4	// ==============================================================
    5	import java.sql.*;
    6	
    7	public class DBConnection 
    8	{
    9	    // 指定驱动程序
    10	    private static String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
    11	    // 创建指定数据库的URL
    12	    private static String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test";
    13	    // 提供用户名和密码
    14	    private static String user="sa";
    15	    private static String password="sasa";
    16	
    17	    public static Connection getConnection() {
    18	        Connection con;
    19	        try {
    20	 		  // 加载驱动程序
    21	           Class.forName(driver);
    22	           // 创建连接
    23	           con = DriverManager.getConnection(url, user, password);
    24	           return con;
    25	        } catch (ClassNotFoundException e) {
    26	            System.out.println(e.getMessage());
    27	        } catch (SQLException e) {
    28	            System.out.println(e.getMessage());
    29	        }
    30	        return null;
    31	    }
    32	}


        【程序注解】
        在创建连接的方法中,调用的是DriverManager类的静态成员方法getConnection(),3个参数分别为数据库的URL、用户名和密码。

        另外,在连接数据库的过程中要注意异常的捕获。在第30行一定要返回一个null值表示数据库连接失败,否则程序编译时会报错。 (T111)

    本文选自飞思图书《精通Java核心技术》
  • 相关阅读:
    UVALive 5983 MAGRID DP
    2015暑假训练(UVALive 5983
    poj 1426 Find The Multiple (BFS)
    poj 3126 Prime Path (BFS)
    poj 2251 Dungeon Master 3维bfs(水水)
    poj 3278 catch that cow BFS(基础水)
    poj3083 Children of the Candy Corn BFS&&DFS
    BZOJ1878: [SDOI2009]HH的项链 (离线查询+树状数组)
    洛谷P3178 [HAOI2015]树上操作(dfs序+线段树)
    洛谷P3065 [USACO12DEC]第一!First!(Trie树+拓扑排序)
  • 原文地址:https://www.cnblogs.com/neozhu/p/97943.html
Copyright © 2011-2022 走看看