JDBC连接数据库的几种方法与简单解析

首先要知道jdbc:使用Java代码发送sql语句的技术就是jdbc技术。即jdbc是一个接口,用于不同的数据库(oracle、mysql、sqlserver。。)的操作。使用jdbc发送sql语句的前提:
登录数据库服务器(连接数据库服务器)
数据库的IP地址
端口
数据库用户名
密码

JDBC的URL=协议名+子协议名+数据源名。
a 协议名总是“jdbc”。
b 子协议名由JDBC驱动程序的编写者决定。
c 数据源名也可能包含用户与口令等信息;这些信息也可单独提供。
几种常见的数据库连接

——————————-oracle——————
驱动:oracle.jdbc.driver.OracleDriver
URL:jdbc:oracle:thin:@machine_name:port:dbname
注:machine_name:数据库所在的机器的名称;
port:端口号,默认是1521

——————————-mysql——————-
驱动:com.mysql.jdbc.Driver
URL:jdbc:mysql://machine_name:port/dbname
注:machine_name:数据库所在的机器的名称(本机一般默认为localhost);
port:端口号,默认3306

—————————SQL Server——————
驱动:com.microsoft.jdbc.sqlserver.SQLServerDriver
URL:jdbc:microsoft:sqlserver://<:port>;DatabaseName=
注:machine_name:数据库所在的机器的名称;
port:端口号,默认是1433

————————–DB2————————–
驱动:com.ibm.db2.jdbc.app.DB2Driver
URL:jdbc:db2://<:port>/dbname
注:machine_name:数据库所在的机器的名称;(port默认5000)
这里以Mysql为例。
所需jar包:mysql-connector-java-5.1.7-bin.jar
代码如下:

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.util.Properties;

import org.junit.Test;
public class Demo1{
        //首先连接到数据库的URL
        private String url = "jbdc:mysql://localhost:3306/demo";/*jdbc协议:数据库子协议:主机:端口/连接的数据库*/
        private String user = "root";//数据库用户名
        private String password = "root";//数据库密码
        /*
            第一种方法
        */
    @Test
    public void test1() throws Exception{
        //1.创建驱动程序类对象
        Driver driver = new com.mysql.jdbc.Driver();//需要导入上面提到的jar包
        //设置用户名和密码
        Properties pro = new Properties();
        pro.setProperty("user",user);
        pro.setProperty("password",password);
        //2.连接数据库
        Connection conn = driver.connect(url,pro);
        //测试是否连接成功
        System.out.println(conn);
    }
    /*
            第二种方法(使用驱动管理器类连接数据库)
        */
        @Test
    public void test2() throws Exception{
    //创建驱动程序类对象
        Dirver dirver = new com.mysql.jdbc.Dirver();   

/*Mysql*/
        //Driver driver2 = new com.oracle.jdbc.Driver();/*oracle*/
        //1.注册驱动程序(可以注册多个)
        DirverManager.registerDirver(dirver);
        //2.建立连接到数据库
        Connection conn = DriverManager.getConnection(url, user, password);
        //测试是否连接成功
        System.out.println(conn);
    }   

}

运行后,成功结果应该会显示类似信息:

分析:在test2方法中,创建驱动程序类对象new com.mysql.jdbc.Dirver(); 后在进行注册驱动程序DirverManager.registerDirver(dirver); 实际上已经注册了两次。因为在Driver.class文件中有如下一段静态代码块:

 //
    // Register ourselves with the DriverManager
    //
    static {
        try {
            java.sql.DriverManager.registerDriver(new Driver());
        } catch (SQLException E) {
            throw new RuntimeException("Can‘t register driver!");
        }
    }

即在进行创建驱动程序类对象Driver的时候就执行了registerDriver(new Driver());,所以第二种方法中省略DirverManager.registerDirver(dirver);语句也正确。



基于以上分析,可以采用 通过得到字节码对象的方式加载静态代码块,从而注册驱动程序,即把创建驱动类对象语句换成Class.forName(“com.mysql.jdbc.Driver”);括号内双引号语句为Dirver.Class文件所在的包名(上面所提到的jar包里面)即可。完整代码如下:

@Test
    public void test3() throws Exception{
        //通过得到字节码对象的方式加载静态代码块,从而注册驱动程序
        Class.forName("com.mysql.jdbc.Driver");
        //2.连接到具体的数据库
        Connection conn = DriverManager.getConnection(url, user, password);
        System.out.println(conn);
    }

据此,这部分的连接已经成功了。对代码进行简单的分析有助于理解记忆而不是死记硬背达到活学活用。本例以Mysql数据库进行,其他数据库类似。

时间: 2024-10-16 11:49:55

JDBC连接数据库的几种方法与简单解析的相关文章

[设计模式]两种方法实现简单工厂模式

<!--完整代码下载链接:点击下载完整代码示例--> 1.描述 在项目开发中经常会遇到根据不同的条件创建不同的对象,然后对该对象进行操作,一般都包括许多的switch -case分支如下: CBase* pBase(NULL); switch (type_variable) { case obj1: pBase = new CBaseDerivate1();break; case obj2: pBase = new CBaseDerivate2();break; ... case objN:

C#连接数据库的四种方法(转)

C#连接数据库的四种方法 在进行以下连接数据库之前,请先在本地安装好Oracle Client,同时本次测试System.Data的版本为:2.0.0.0. 在安装Oracle Client上请注意,如果OS是3-BIT请安装32-BIT的Oracle Client,但OS是64-BIT,需要根据实际情况安装,如果你的APP是按32-BIT运行的,则需要安装32-BIT客户端,如果是按64位运行的,则安装64位客户端,而不是OS是64-BIT的,就要安装64-BIT的ORACLE客户端.   本

求Fibonacci数的三种方法和时间复杂度解析

题目: 定义Fibonacci数列如下: f(0)=1 f(1)=1 f(n)=f(n-1)+f(n-2), n>=2 输入n,用最快的方法求该数列的第n项. 解答一: 直接用公式写递归函数.很简单,很低效,就不写了.时间复杂度T(N) = T(N-1) + T(N-2); 也是f(n)本身,2^(n/2)<f(n)<2^n. 解答二: 用循环求,也很直接,效率很高了,时间复杂度是O(n). int f(int n) { if(n <= 1) return 1; int f0=1,

[ 转载 ] Java基础10--关于Object类下所有方法的简单解析

关于Object类下所有方法的简单解析 类Object是类层次结构的根类,是每一个类的父类,所有的对象包括数组,String,Integer等包装类,所以了解Object是很有必要的,话不多说,我们直接来看jdk的源码,开始我们的分析之路 1.hashcode() public native int hashCode();//native说明跟机器有关,跟对象的地址有关 如果我们新建一个类,而hashcode没有被重写的话,那么hashcode返回的值只于对象的地址有关,如果hashcode被重

Qt连接数据库的两种方法

我曾经想过,无论在哪个平台下开发,都不要再接触SQL Server了,但显然不行.我们是来看世界的,不是来改变世界的,想通就好. 前两天,尝试了一下Qt下远程访问数据库.在macOS下,用Qt 5.11写个程序来远程访问Win10下的SQL Server和My SQL数据库,Qt中通过QSqlDatabase来创建一个数据库连接.简单来说,QSqlDatabase连接数据库可以分为两种方式,聊到这两种方式,就要大概的说一下数据访问的前因后果,以微软的数据访问历史为例,本文只是从快速使用的角度出发

mysql 远程连接数据库的二种方法

一.连接远程数据库: 1.显示密码 如:MySQL 连接远程数据库(192.168.5.116),端口"3306",用户名为"root",密码"123456" C:/>mysql -h 192.168.5.116 -P 3306 -u root -p123456 2.隐藏密码 如:MySQL 连接本地数据库,用户名为"root", C:/>mysql -h localhost -u root -p Enter pa

交换变量的三种方法及简单分析

交换两个变量的思路主要有两种:借助或不借助临时变量.具体操作时又有以下三种简单算法: 1.借助临时变量的算法 #include <stdio.h> int main(void) { int a, b, t; scanf("%d%d", &a, &b); t = a; a = b; b = t; printf("a = %d, b = %d\n", a, b); return 0; } 2.不借助临时变量的算法1(通过加减运算) #incl

java使用JDBC连接数据库的几种方式

/** * 1 在方法中固化连接参数 * * @return 数据库连接 */ public Connection getConnection() { Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root",

Java 2种方法实现简单的session超时登出

1.使用拦截器 用户每次和后台交互,如果用户长时间未操作,则需要检测用户的登录状态,这样的场景已经是再正常不过了. 传统的做法可以在每个controller里先判断user的状态,然后再执行业务操作,但这样比较代码不够精简,优雅. 可以使用最简单的拦截器,如: public class LoginInterceptor extends HandlerInterceptorAdapter { private List<String> IGNORE_URI; @Override public bo