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();
}
}

运行结果:
