职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 1824|回复: 0

建立JDBC数据库连接实例解析

[复制链接]
weisheng 发表于 2006-11-14 07:13 | 显示全部楼层 |阅读模式
连接(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值表示数据库连接失败,否则程序编译时会报错。
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-12 19:54 , Processed in 0.138788 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表