【JDBC】JDBC API 详解 ① ( DriverManager 驱动管理类 | 注册驱动 | 建立数据库连接 )

news/2024/5/19 0:01:39 标签: jdbc, java, 数据库, sqlserver

文章目录

  • 一、DriverManager 驱动管理类





一、DriverManager 驱动管理类



DriverManager 驱动管理类 有两个作用 :


1、注册驱动


调用 Class.forName 反射方法 , 加载 JDBC 驱动 ;

java">// 加载 JDBC 驱动         
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

上述反射操作 , com.microsoft.sqlserver.jdbc.SQLServerDriver 类加载到了内存中 , 在该类中 , 定义了如下静态代码块 :

java">
/**
 * 提供连接到SQL Server数据库和获取有关JDBC驱动程序的信息的方法。
 */
public final class SQLServerDriver implements java.sql.Driver {
    // 在DriverManager上注册
    static {
        try {
            register();
        } catch (SQLException e) {
            if (drLogger.isLoggable(Level.FINER) && Util.isActivityTraceOn()) {
                drLogger.finer("Error registering driver: " + e);
            }
        }
    }
    
    /**
     * 将驱动注册到DriverManager。如果驱动程序已经注册,则无操作。
     * 
     * @throws SQLException
     *         if error
     */
    public static void register() throws SQLException {
        if (!isRegistered()) {
            mssqlDriver = new SQLServerDriver();
            DriverManager.registerDriver(mssqlDriver);
        }
    }
}

只要 将 SQLServerDriver 类加载到内存中 , 就会 自动执行上述 register() 注册方法 , 在注册方法中会调用

java">DriverManager.registerDriver(mssqlDriver);

代码 , 注册驱动 ;


2、建立数据库连接


建立数据库链接 , 单个参数 函数原型 :

java">public static Connection getConnection(String url)

单个参数传入的 数据库连接字符串 , 格式如下 :

java">// 数据库连接字符串
String connectionUrl = "jdbc:sqlserver://localhost:1433;databaseName=YourDatabaseName;user=YourUsername;password=YourPassword";

需要在上面的 URL 中 , 拼接 IP 地址 , 端口号 , 数据库名称 , 用户名 , 密码 等信息 ;


建立数据库链接 , 三个参数 函数原型 :

java">public static Connection getConnection(String url,
        String user, String password) throws SQLException

单个参数传入的 数据库连接字符串 , 格式如下 :

java">// 数据库连接字符串
String connectionUrl = "jdbc:sqlserver://localhost:1433/YourDatabaseName";

需要在上面的 URL 中 , 拼接 IP 地址 , 端口号 , 数据库名称 ,

第二个参数是 用户名 , 第三个参数是 密码 ;


代码示例 :

java">import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Example {
  public static void main(String[] args) {
    String url = "jdbc:mysql://localhost/mydatabase";
    String user = "root";
    String password = "mypassword";

    try {
      Connection conn = DriverManager.getConnection(url, user, password);
      // 使用连接执行数据库操作
    } catch (SQLException e) {
      System.out.println("无法连接数据库:" + e.getMessage());
    }
  }
}

http://www.niftyadmin.cn/n/177045.html

相关文章

leetcode配对交换(面试题)

题目 配对交换。编写程序,交换某个整数的奇数位和偶数位,尽量使用较少的指令(也就是说,位0与位1交换,位2与位3交换,以此类推)。 示例1: 输入:num 2(或者0b10&#xf…

字节跳动测试岗面试记:二面被按地上血虐,所幸Offer已到手...

在互联网做了几年之后,去大厂“镀镀金”是大部分人的首选。大厂不仅待遇高、福利好,更重要的是,它是对你专业能力的背书,大厂工作背景多少会给你的简历增加几分竞争力。 但说实话,想进大厂还真没那么容易。最近面试字…

HTML5 MathML

HTML5 MathML MathML 与 HTML相似度很高&#xff0c;但是比较繁琐。它继承了角括号和双标签&#xff08;<标签>内容</标签>&#xff09;的用法。 HTML5 可以在文档中使用 MathML 元素&#xff0c;对应的标签是 <math>...</math> 。 MathML 是数学标…

【离散数学】循环群练习题

1&#xff1a;模n加法循环群的生成元输入循环群的阶数n&#xff0c;输出该群的生成元。例如&#xff1a;输入&#xff1a;24输出&#xff1a;1 5 7 11 13 17 19 23注&#xff1a;生成元用空格分隔&#xff0c;&#xff08;23后面也有一个空格&#xff09;#include <iostream…

记一次 .NET 某医疗住院系统 崩溃分析

一&#xff1a;背景 1. 讲故事 最近收到了两起程序崩溃的dump&#xff0c;查了下都是经典的 double free 造成的&#xff0c;蛮有意思&#xff0c;这里就抽一篇出来分享一下经验供后面的学习者避坑吧。 二&#xff1a;WinDbg 分析 1. 崩溃点在哪里 windbg 带了一个自动化分…

【致敬未来的攻城狮计划】--RA2E1 开发板测评(3)按键输入

前言&#xff08;1&#xff09;首先感谢 李肯前辈的活动&#xff0c;从而申请到了RA2L1开发板的测评。&#xff08;2&#xff09;本文主要介绍按键输入的内容。&#xff08;3&#xff09;学习本文需要准备的前提&#xff0c;【致敬未来的攻城狮计划】--RA2E1 开发板测评&#x…

小米路由器4A千兆版救砖和刷回官方固件

之前的文章介绍了如何将小米路由器4A千兆版刷第三方开源固件&#xff1a; 小米路由器4A千兆版 OpenWRTInvasion 刷机教程小米路由器4A千兆版 CH341A 编程器刷机教程 那如果我后悔了&#xff0c;想要刷回官方固件该如何操作呢&#xff1f; 刷回官方固件可以用小米路由器修复工…

应用程序之间的集成,帮助企业提高效率

企业在使用不同的应用程序时&#xff0c;经常会遭遇到不同应用程序进行协作时出现流通障碍的情况。这对企业业务的正常流转产生了一定的阻力。而使用Zoho Creator创建出的应用程序&#xff0c;就可以轻松和一系列第三方应用程序进行深度集成&#xff0c;帮助企业提高业务效率。…