通过Driver接口获取数据库连接
数据持久化
数据库存取技术分类
JDBC直接访问数据库
JDO技术
第三方O/R工具,如Hibernate,ibatis等
JDBC是java访问数据库的基石
JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口。
JDBC接口(API)包括两个层次:
- 面向应用的API:java api,抽象接口,供应用程序开发人员使用(连接数据库,执行SQL语句,获得结果)。
- 面向数据库的API:java driver api,供开发商开发数据库驱动程序用。
JDBC试验,Driver是一个接口:数据库厂商必须提供实现的接口,能从其中获取数据库连接。
可以通过Driver的实现类对象获取数据库连接
加入mysql驱动
解压mysql-connector-java.zip
在挡墙项目下新建lib目录
吧.jar文件复制到lib目录下
右键buildpath,add to buildpath加入到类路径下
JDBC的URL的标准由三部分组成,各部分间用冒号分隔。
jdbc:<子协议>:<子名称>
协议:JDBC URL中的协议总是jdbc
子协议:子协议用于标识一个数据库驱动程序
子名称:一种标识数据库的方法。子名称可以依不同的子协议而变化,用子名称的目的是为了定位数据库提供足够的信息
遇到的问题:
进不去,各种报错:可能是密码错误了。
package com.litian.jdbc; import java.sql.Connection; import java.sql.Driver; import java.sql.SQLException; import java.util.Properties; /** * @author: Li Tian * @contact: litian_cup@163.com * @software: IntelliJ IDEA * @file: JDBCTest.java * @time: 2019/12/15 18:56 * @desc: JDBC试验,Driver是一个接口:数据库厂商必须提供实现的接口,能从其中获取数据库连接。 */ public class JDBCTest { public static void main(String[] args) throws SQLException { // 1. 创建一个Driver实现类的对象 Driver driver = new com.mysql.jdbc.Driver(); // 2. 准备连接数据库的基本信息:url,user,password String url = "jdbc:mysql://localhost:3306/girls"; Properties info = new Properties(); info.put("user", "root"); info.put("password", "tian19951103"); // 3. 调用Driver接口的connect(url, info)获取数据库连接 Connection connection = driver.connect(url, info); System.out.println(connection); } }
编写一个通用的方法,在不修改源程序的情况下,可以获取任何数据库的连接
解决方案:把数据库驱动Driver 实现类的全类名、url、user、password放入一个配置文件中,通过修改配置文件的方式实现和具体的数据库解耦。
jdbc.properties
driver=com.mysql.jdbc.Driver jdbcUrl=jdbc:mysql://localhost:3306/girls user=root password=tian19951103
JDBCTest
package com.litian.jdbc; import java.io.InputStream; import java.sql.Connection; import java.sql.Driver; import java.sql.SQLException; import java.util.Properties; /** * @author: Li Tian * @contact: litian_cup@163.com * @software: IntelliJ IDEA * @file: JDBCTest.java * @time: 2019/12/15 18:56 * @desc: JDBC试验,Driver是一个接口:数据库厂商必须提供实现的接口,能从其中获取数据库连接。 */ public class JDBCTest { public void test1() throws SQLException { // 1. 创建一个Driver实现类的对象 Driver driver = new com.mysql.jdbc.Driver(); // 2. 准备连接数据库的基本信息:url,user,password String url = "jdbc:mysql://localhost:3306/girls"; Properties info = new Properties(); info.put("user", "root"); info.put("password", "tian19951103"); // 3. 调用Driver接口的connect(url, info)获取数据库连接 Connection connection = driver.connect(url, info); System.out.println(connection); } // 编写一个通用的方法,在不修改源程序的情况下,可以获取任何数据库的连接 public Connection getConnection() throws Exception { String driverClass = null; String jdbcUrl = null; String user = null; String password = null; // 读取类路径下的jdbc.propertites 文件 InputStream in = getClass().getClassLoader().getResourceAsStream("jdbc.properties"); Properties properties = new Properties(); properties.load(in); driverClass = properties.getProperty("driver"); jdbcUrl = properties.getProperty("jdbcUrl"); user = properties.getProperty("user"); password = properties.getProperty("password"); Driver driver = (Driver) Class.forName(driverClass).newInstance(); Properties info = new Properties(); info.put("user", user); info.put("password", password); Connection connection = driver.connect(jdbcUrl, info); return connection; } public void testGetConnection() throws Exception { System.out.println(getConnection()); } public static void main(String[] args) throws Exception { new JDBCTest().testGetConnection(); } }