JDBC(Java Data Base Connectivity):是使用Java存取数据库系统的标准解决方案。它将不同数据库间各自差异API与标准SQL语句分开看待,实现数据库无关的Java操作接口。
开发人员使用JDBC统一的API,并专注于标准SQL语句,就可以避免直接处理底层数据库驱动程序与相关操作接口的差异性。
一,使用JDBC操作数据库
先要添加数据库的驱动包,不要忘了!
JDBC操作的七个步骤:
- 加载数据库的JDBC驱动程序
- 提供连接数据库的几个参数
- 打开数据库的一个连接
- 获取一个用于执行SQL语句的Statement对象
- 执行SQL操作
- 处理结果
- 关闭JDBC资源
示例:
注:要创建一个jackie的数据库,这里略去。
package com.jackie.core_jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCFirstDemo {
public static void main(String[] args) {
try {
//step1:加载数据库的JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
System.out.println("没有找到驱动程序!");
e.printStackTrace();
}
//step2:提供连接数据库的几个参数
String url = "jdbc:mysql:///jackie";
String user = "root";
String password = "root";
Connection conn = null;
try {
//step3:打开数据库的一个连接
conn = DriverManager.getConnection(url, user, password);
//step4:获取一个用于执行SQL语句的Statement对象
Statement stmt = conn.createStatement();
//step5:执行SQL操作
String sql = "insert into student (name,birthday,gender,cid,score) values ('赵六','1988-11-28 23-23-32','女',1,60)";
int count = stmt.executeUpdate(sql);
//step6:处理结果
System.out.println(count);
} catch (SQLException e) {
e.printStackTrace();
} finally {
//step7:关闭JDBC资源
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
单独说说查询操作(独特性):
...
// step5:执行SQL操作
String sql = "select sid,name,gender,birthday,score,cid from student";
ResultSet rs = stmt.executeQuery(sql);
// step6:处理结果
while (rs.next()) {
int sid = rs.getInt(1);
String name = rs.getString(2);
String gender = rs.getString(3);
Timestamp ts = rs.getTimestamp(4);
Date date = null;
if (ts != null){
date = new Date(ts.getTime());
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd HH:mm:ss");
String time = sdf.format(date);
int score = rs.getInt(5);
int cid = rs.getInt(6);
System.out.println("sid= " + sid + ",name = " + name + ",birthday= " + time + ",gender= " + gender+ ",score= " + score + ",cid = " + cid);
}
...
二,使用PreparedStatement封装CRUD操作
三,事务控制
四,数据源和C3P0连接池
五,dbutils包的使用