温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-07-26 00:48:53 来源:网络 阅读:752 作者:lsieun 栏目:数据库
  • 1、什么是JDBC

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

  • 2.1、第一种实现方式

  • 2.2、第二种实现方式

  • 2.3、第三种实现方式

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

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()     } }




向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI