专栏首页c#开发者建立JDBC数据库连接实例解析

建立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核心技术》

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • javascript事件详解

    事件流 事件流两种顺序:冒泡与捕获。 简单的添加与删除事件 obj.onclick=function(){} obj.onclick=null; 通用事件添加的...

    前朝楚水
  • java.net.ConnectException: Call From slaver1/192.168.19.128 to slaver1:8020 failed on connection exc

    1:练习spark的时候,操作大概如我读取hdfs上面的文件,然后spark懒加载以后,我读取详细信息出现如下所示的错误,错误虽然不大,我感觉有必要记录一下,因...

    别先生
  • 接上一篇事件详解

    事件类型: DOM3级事件规定了以下几类事件;如下: UI事件: 当用户与页面上的元素交互时触发; load事件:当页面加载完后(包括所有图像,所有javasc...

    前朝楚水
  • JavaScript实现java中的|接口|继承|抽象类|继承|多态|对象|工厂模式|重写|重载|

    //定一个接口方法, var Interface = function(name,methods){ if(arguments.length != 2){ ...

    前朝楚水
  • 闭包

    image.png 看懂的,看不懂的,请投稿与我交流

    前朝楚水
  • 一个开源的五子棋大战送给各位小伙伴!

    有暇,做了个五子棋大战的小游戏送给各位小伙伴! 用到的知识点有: 1.JavaWeb基础知识(懂jsp,servlet足够) 2.JavaScript和jQue...

    江南一点雨
  • HTML5中类jQuery选择器querySelector的使用

    简介 HTML5向Web API新引入了document.querySelector以及document.querySelectorAll两个方法用来更方便地从...

    前朝楚水
  • ODL源码分析之flowmod下发流程

    上一篇简单分析了openflowjava到openflowplugin(介绍的hello消息),本篇介绍如何从openflowplugin到openflowja...

    SDNLAB
  • 重磅来袭,抱歉,来晚啦

    来一波 、基本概念 1.1、spring Spring 是一个开源框架, Spring 是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Ro...

    码神联盟
  • Spring Cloud中Hystrix的请求缓存

    高并发环境下如果能处理好缓存就可以有效的减小服务器的压力,Java中有许多非常好用的缓存工具,比如Redis、EHCache等,当然在Spring Cloud的...

    江南一点雨

扫码关注云+社区

领取腾讯云代金券