JDBC系列:(1)通过JDBC连接数据库
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,1、什么是JDBC2、JDBC连接数据库的三种方式2.1、第一种实现方式2.2、第二种实现方式2.3、第三种实现方式3、com.mysql.jdbc.Driver的内部实现1、什么是JDBC使用jav
千家信息网最后更新 2025年01月20日JDBC系列:(1)通过JDBC连接数据库
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.OracleDriverURL:jdbc:oracle:thin:@machine_name:port:dbname注:machine_name:数据库所在的机器的名称; port:端口号,默认是1521-------------------------------mysql-------------------驱动:com.mysql.jdbc.DriverURL:jdbc:mysql://machine_name:port/dbname注:machine_name:数据库所在的机器的名称; port:端口号,默认3306 ---------------------------SQL Server------------------驱动:com.microsoft.jdbc.sqlserver.SQLServerDriverURL:jdbc:microsoft:sqlserver://<:port>;DatabaseName= 注:machine_name:数据库所在的机器的名称; port:端口号,默认是1433--------------------------DB2--------------------------驱动:com.ibm.db2.jdbc.app.DB2DriverURL:jdbc:db2:// <: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() }}
数据
数据库
驱动
方式
程序
驱动程序
代码
口号
名称
对象
所在
机器
方法
用户
信息
密码
数据源
用户名
端口
静态
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发费用如何分摊
榆林软件开发培训的学校
icloud怎么上传数据库
重庆软件开发专业哪个学校好
新思路软件开发有限公司
tbc 70数据库
昆明参考软件开发零售价格
天津兴趣少儿编程软件开发
邮件无法验证服务器的身份
手游单机传奇服务器
数据库er图外码怎么标
杭州齐尚网络技术公司
个人户缴税有数据库没
长沙比较有名的软件开发公司
数据库水印算法有哪些
网络安全的手绘画图片
成都华骏互联网科技有限公司
阿里数据库是阿里巴巴的吗
outlook邮箱存服务器
跨云服务器之间传输大文件
服务器费电不
潜江靠谱的软件开发价格
微信小程序数据库问题
软件开发阿洋
网络广告机如何自己装服务器
服务器管理及维护
学什么语言软件开发好
安徽省涉密软件开发乙级资质
长沙wifi软件开发
昌平区进口软件开发价位