1、JDBC概念
Java DataBase Connectivity Java数据库连接,Java语言操作数据库
JDBC的本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
Person接口 Worker类 Person p = new Worker(); p.eat();
JDBC中也是这样的,真正是驱动jar包中的实现类定义的实现方法。
2、JDBC执行的步骤
(1)导入驱动jar包
* 复制mysql-connector-java-5.1.44.jar到项目的libs目录下
* 右键--> add as Library(这样就能将jar包加入到项目中)
(2)注册驱动(让程序知道是哪个驱动包)
(3)获取数据库链接对象Connection
(4)定义sql
(5)获取执行sql语句的对象,Satement
(6)执行sql,接受返回结果
(7)处理结果
(8)释放资源
- 释放ResultSet, Statement,Connection.
- 数据库连接(Connection)是非常稀有的资源,用完后必须马上释放,如果Connection不能及时正确的关闭将导致系统宕机。Connection的使用原则是尽量晚创建,尽量早的释放。
3.第一个JDBC程序
准备工作:创建测试数据库
CREATE DATABASE jdbcStudy CHARACTER SET utf8 COLLATE utf8_general_ci; USE jdbcStudy; CREATE TABLE `users` ( `id` INT NOT NULL, `name` VARCHAR(40) NOT NULL, `password` VARCHAR(40) NOT NULL, `email` VARCHAR(60) NOT NULL, `birthday` DATE, PRIMARY KEY(`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8; INSERT INTO users VALUES(1,'zhangsan','123456','zs@sina.com','1980-12-04'), (2,'lisi','123456','lisi@sina.com','1981-12-04'), (3,'wangwu','123456','wangwu@sina.com','1979-12-04');
编写测试代码
package cn.company.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class JdbcDemo1 { public static void main(String[] args) throws Exception { // 1. 导入驱动jar包 // 2.注册驱动 Class.forName("com.mysql.jdbc.Driver"); // 固定写法,使用反射加载驱动 // 3.获取数据库的连接对象 // useUnicode=true设置字符集编码 // characterEncoding=utf8使用utf8 // &useSSL=true使用安全连接 String url = "jdbc:mysql://localhost:3306/jdbcStudy?useUnicode=true&characterEncoding=utf8&useSSL=false"; String username = "root"; String password = "123456"; Connection connection = DriverManager.getConnection(url,username,password); // 4.执行sql的对象 // Statement:执行sql的对象 Statement statement = connection.createStatement(); // 5. 定义一个sql语句 String sql = "select * from users"; // 返回结果集,结果集中封装了所有查询回来的对象 ResultSet resultSet = statement.executeQuery(sql); while(resultSet.next()) { System.out.println("id="+resultSet.getObject("id")); System.out.println("name="+resultSet.getObject("name")); System.out.println("pwd="+resultSet.getObject("password")); System.out.println("email="+resultSet.getObject("email")); System.out.println("birthday="+resultSet.getObject("birthday")); System.out.println("---"); } // 6.释放连接 resultSet.close(); statement.close(); connection.close(); } }
运行结果: