JDBC系列:(1)通过JDBC连接数据库

1、什么是JDBC

使用java代码(程序)发送sql语句的技术

使用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:数据库所在的机器的名称;
      port:端口号,默认3306    

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

--------------------------DB2--------------------------
驱动:com.ibm.db2.jdbc.app.DB2Driver
URL:jdbc:db2://<machine_name><:port>/dbname
注:machine_name:数据库所在的机器的名称;
      port:端口号,默认是5000
-------------------------------------------------------

2、JDBC连接数据库的三种方式

2.1、第一种实现方式

package com.rk.db.a_jdbc;

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

/**
 * jdbc连接数据库
 * 第一种方法:通过创建JDBC实现类的驱动类对象建立数据库连接
 * @author RK
 * 
 */
public class Demo01
{
	public static void main(String[] args) throws SQLException
	{
			// jdbc协议:数据库子协议:主机:端口/连接的数据库   //
			String url = "jdbc:mysql://localhost:3306/testdb";
			String username = "root";
			String password = "root";

			//1.创建驱动程序类对象
			Driver driver = new com.mysql.jdbc.Driver();

			//设置用户名和密码
			Properties props = new Properties();
			props.setProperty("user", username);
			props.setProperty("password", password);

			//2.连接数据库,返回连接对象
			Connection conn = driver.connect(url, props);

			System.out.println(conn);
	}
}

2.2、第二种实现方式

package com.rk.db.a_jdbc;

import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;

/**
 * jdbc连接数据库
 * 第二种方法:使用驱动管理器类连接数据库(注册了两次,没必要)
 * @author RK
 *
 */
public class Demo02
{
	public static void main(String[] args) throws SQLException
	{
		String url = "jdbc:mysql://localhost:3306/testdb";
		String username = "root";
		String password = "root";

		Driver driver = new com.mysql.jdbc.Driver();
		//1.注册驱动程序(可以注册多个驱动程序)
		DriverManager.registerDriver(driver);

		//2.连接到具体的数据库
		Connection conn = DriverManager.getConnection(url, username, password);
		System.out.println(conn);
	}
}

2.3、第三种实现方式

package com.rk.db.a_jdbc;

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
/**
  * jdbc连接数据库
 * 第三种方法:使用加载驱动程序类  来 注册驱动程序(推荐使用这种方式连接数据库)
 * @author RK
 *
 */
public class Demo03
{
	public static void main(String[] args) throws ClassNotFoundException, SQLException
	{
		String url = "jdbc:mysql://localhost:3306/testdb";
		String user = "root";
		String password = "root";

		//通过得到字节码对象的方式加载静态代码块,从而注册驱动程序
		Class.forName("com.mysql.jdbc.Driver");

		//连接到具体的数据库
		Connection conn = DriverManager.getConnection(url,user,password);
		System.out.println(conn);
	}

}

3、com.mysql.jdbc.Driver的内部实现

在这里主要解释一个问题,也就是在2.3中,并没有写代码用DriverManager对com.mysql.jdbc.Driver的实例进行注册,原因就在于com.mysql.jdbc.Driver的源码当中。

在com.mysql.jdbc.Driver类中提供了一个static(静态)代码段,如下:

java.sql.DriverManager.registerDriver(new Driver());

完整代码如下:

------com.mysql.jdbc.Driver类中提供了static代码段,主动向DriverManager进行注册
java.sql.DriverManager.registerDriver(new Driver());

package com.mysql.jdbc;

import java.sql.SQLException;

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

    /**
     * Construct a new driver and register it with DriverManager
     */
    public Driver() throws SQLException {
        // Required for Class.forName().newInstance()
    }
}
时间: 2024-08-03 19:27:56

JDBC系列:(1)通过JDBC连接数据库的相关文章

老调重弹:JDBC系列 之 &amp;lt;JDBC层次结构和基本构成&amp;gt;

http://blog.csdn.net/asmcos/article/details/46676101 http://blog.csdn.net/asmcos/article/details/46676087 http://blog.csdn.net/asmcos/article/details/46676073 http://blog.csdn.net/asmcos/article/details/46676053 http://blog.csdn.net/asmcos/article/de

老调重弹:JDBC系列 之 &lt;驱动加载原理全面解析&gt;

前言 最近在研究Mybatis框架,由于该框架基于JDBC,想要很好地理解和学习Mybatis,必须要对JDBC有较深入的了解.所以便把JDBC 这个东东翻出来,好好总结一番,作为自己的笔记,也是给读者一个参考---以下是本文的组织结构,读者可以点击上面的目录查看: 概述 一般情况下,在应用程序中进行数据库连接,调用JDBC接口,首先要将特定厂商的JDBC驱动实现加载到系统内存中,然后供系统使用.基本结构图如下: 驱动加载入内存的过程 这里所谓的驱动,其实就是实现了java.sql.Driver

老调重弹:JDBC系列 之 &lt;JDBC层次结构和基本构成&gt;

前言 最近在研究Mybatis框架,由于该框架基于JDBC,想要很好地理解和学习Mybatis,必须要对JDBC有较深入的了解.所以便把JDBC 这个东东翻出来,老调重弹,好好总结一番,作为自己的笔记,也是给读者一个参考---本篇博文是我的上篇博文老调重弹:JDBC系列 之 <驱动加载原理全面解析>的续文,主要梳理一下JDBC的层次结构和基本构成.以下是本文的组织内容(用户可以点击上面的目录栏查看): JDBC的层次结构 总体而言,JDBC包含以下几大角色 : Driver.DriverMan

老调重弹:JDBC系列 之 存储过程 CallableStatement(创建和使用)

前言 最近在研究Mybatis框架,由于该框架基于JDBC,想要很好地理解和学习Mybatis,必须要对JDBC有较深入的了解.所以便把JDBC 这个东东翻出来,老调重弹,好好总结一番,作为自己的笔记,也是给读者一个参考--- 本文主要通过 使用JDBC创建存储过程 和使用JDBC调用存储过程两部分 阐述JDBC 对存储过程的支持.本文将在Oracle数据库下创建一个可以表示岗位信息的基本表Jobs为例, 然后通过存储过程对这个Jobs表进行各种操作.表JOBS的建表语句如下: -- Creat

老调重弹:JDBC系列之&lt;驱动加载原理全面解析) ----转

  最近在研究Mybatis框架,由于该框架基于JDBC,想要很好地理解和学习Mybatis,必须要对JDBC有较深入的了解.所以便把JDBC 这个东东翻出来,好好总结一番,作为自己的笔记,也是给读者一个参考--- 概述 一般情况下,在应用程序中进行数据库连接,调用JDBC接口,首先要将特定厂商的JDBC驱动实现加载到系统内存中,然后供系统使用.基本结构图如下: 驱动加载入内存的过程 这里所谓的驱动,其实就是实现了java.sql.Driver接口的类.如oracle的驱动类是 oracle.j

JDBC系列:(3)使用PreparedStatement执行sql语句

执行sql语句的接口 接口 作用 Statement接口 用于执行静态的sql语句 PreparedStatement接口 用于执行预编译sql语句 CallableStatement接口 用于执行存储过程的sql语句(call xxx) PreparedStatement Vs Statement 序号 不同 描述 1 语法不同 PreparedStatement可以使用预编译的sql,而Statment只能使用静态的sql 2 效率不同 PreparedStatement可以使用sql缓存区

JDBC系列:(2.5)创建JDBCUtils工作类

1.建立db.properties文件 url=jdbc:mysql://localhost:3306/testdb user=root password=root driverClass=com.mysql.jdbc.Driver 2.JDBC工具类:JDBCUtil.java package com.rk.db.utils; import java.io.IOException; import java.io.InputStream; import java.util.Properties;

solr与.net系列课程(三)solr连接数据库

 solr与.net系列课程(三)solr连接数据库 上一章直接讲述的配置文件把大部分人看的很迷惑,大家都想听的是solr到底是怎么用的,好,这一节我们就开始链接数据库,首先讲一下连接之前都要配置哪些文件 1.先下载连接sqlserver的驱动(sqljdbc4.jar)sqljdbc4.jar,),将其复制到C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\solr\WEB-INF\lib (C:\Program Fi

MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

首先需要回顾一下上一篇文章中的内容:MySQL数据库学习笔记(九)----JDBC的PreparedStatement接口重构增删改查 一.JDBC事务处理: 我们已经知道,事务的概念即:所有的操作要么同时成功,要么同时失败.在MySQL中提供了Commit.Rollback命令进行事务的提交与回滚.实际上在JDBC中也存在事务处理,如果要想进行事务处理的话,则必须按照以下的步骤完成. JDBC中事务处理的步骤: 1.要取消掉JDBC的自动提交:void setAutoCommit(boolea