1、什么是JDBC2、JDBC连接数据库的三种方式2.1、第一种实现方式2.2、第二种实现方式2.3、第三种实现方式3、com.Mysql.jdbc.Driver的内部实现1、什么是JDBC使用java代码
使用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
-------------------------------------------------------
package com.rk.db.a_jdbc;
import java.sql.Driver;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
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);
}
}
package com.rk.db.a_jdbc;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
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);
}
}
package com.rk.db.a_jdbc;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
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);
}
}
在这里主要解释一个问题,也就是在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!");
}
}
public Driver() throws SQLException {
// Required for Class.forName().newInstance()
}
}
--结束END--
本文标题: JDBC系列:(1)通过JDBC连接数据库
本文链接: https://lsjlt.com/news/43675.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0