JDBC系列:(1)通过JDBC连接数据库
发表于:2023-03-21 作者:安全数据网编辑
编辑最后更新 2023年03月21日,1、什么是JDBC2、JDBC连接数据库的三种方式2.1、第一种实现方式2.2、第二种实现方式2.3、第三种实现方式3、com.mysql.jdbc.Driver的内部实现1、什么是JDBC使用jav
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() }}
c语言网络技术和编程语言总结
c语言对应的三级考试网络技术
网站服务器后台如何加防护密码
c语言软件开发步骤
c语言中网络技术知识点
服务器对权限提升的防护措施
怎么在阿里云租服务器
黑苹果能做web服务器吗
c语言和网络技术哪个好考
云服务器2核4G是什么性能
互联网科技是公司是做什么的
昌平区软件开发质量服务
济南锐捷网络技术工程师
金融数据库安全试验
小学网络安全手抄报一年级
安全服务器名字
未来教育网络技术题库
奉贤区高科技软件开发设计规范
河南山叶草网络技术有限公司
sq2008数据库下载
登陆服务器未响应英雄联盟
新闻网络安全150字
网络安全教育班级
浙江东辰网络技术
软件开发能做测试吗
网络安全藏文内容
市委网信办两会网络安全
ar软件开发公司
健康企业数据库
厦门手机应用软件开发服务商
互联网科技是公司是做什么的
深圳服务器机柜制造厂
mysql数据库闪退
网络安全法自学感悟
绯石之心无服务器
什么情况下要选择企业服务器
数据库文件删除了有影响吗
数据库原理题库答案
网络安全开展效果
转软件开发要学什么