JDBC 是 Java Database Connectivity 的简称,是 Sun 公司基于 Java 语言提供的用于操作数据库的实现类。我们知道操作数据库需要通过数据库驱动实现,所以 JDBC 也可以看做数据库驱动的实现类,是一种以提供接口的形式供应用程序调用的规范。
基于 JDBC 开发操作 MySql 的项目,首选需要在项目中导入 MySql 的数据库驱动。然后操作数据库的过程可以细分为五个步骤:
1 注册驱动;
2 建立与数据库的链接;
3 获取执行 mysql 语句的对象;
4 执行 mysql 语句,获得结果集;
5 释放资源;
下面以 IDEA 为 IDE 开发 JDBC , 新建 JavaEE 项目:

在项目目录 src 下新建取名为 jdbc 包和取名为 db.properties 的文件,在 jdbc 包中建立 JDBCUtils 和 JDBCRUD 的 java 类。其中
db.properties
文件用于存放配置,JDBCUtils
为工具类,封装 JDBC 通用语句; JDBCRUD 用于对 数据库进行操作。

首先导入 MySql 驱动(下载 MySql 驱动),加入到项目依赖:


然后完善 src 文件夹下新创建的文件:
在 db.properties
文件中对项目进行预配置:
url=jdbc:mysql://localhost:3306/day15_jdbc
username=root
password=11111111
driverclass=com.mysql.jdbc.Driver
JDBCUtils
为工具类的具体内容为:
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ResourceBundle;
import org.junit.Test;
public class JDBCUtils {
private static String driverclass = null;
private static String url = null;
private static String username = null;
private static String password = null;
static {
ResourceBundle bundle = ResourceBundle.getBundle("db");
driverclass = bundle.getString("driverclass");
url = bundle.getString("url");
username = bundle.getString("username");
password = bundle.getString("password");
}
public static Connection getConnection(){
try {
loadDriver();
return DriverManager.getConnection(url, username, password);
}catch (Exception e){
e.printStackTrace();
return null;
}
}
public static void loadDriver(){
try {
Class.forName(driverclass);
}catch (Exception e){
e.printStackTrace();
}
}
public static void release(ResultSet rs, Statement stmt, Connection conn){
if (rs!=null){
try {
rs.close();
}catch (Exception e){
e.printStackTrace();
}
rs = null;
}
if (stmt!=null){
try {
stmt.close();
}catch (Exception e){
e.printStackTrace();
}
stmt = null;
}
if (conn!=null){
try {
conn.close();
}catch (Exception e){
e.printStackTrace();
}
conn = null;
}
}
}
使用工具类 JDBCUtils
和 配置文件 db.properties
对在 JDBCCRUD
类中对数据库进行增删改查操作:
public class JDBCCRUD {
public void insert(User user){
Connection conn = null;
Statement stmt = null;
try {
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = String.format("insert into users values(null ,'%s','%s','%s');", user.getUsername(), user.getPassword(), user.getNickName());
stmt.executeUpdate(sql);
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtils.release(null, stmt, conn);
}
}
public void delete(User user){
Connection conn = null;
Statement stmt = null;
try {
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "delete from users where name = "
+ user.getUsername() +";";
stmt.executeUpdate(sql);
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtils.release(null, stmt, conn);
}
}
public void update(User user){
Connection conn = null;
Statement stmt = null;
try {
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "update users set name = "
+ user.getUsername() +" where name = " +
user.getUsername() +";";
stmt.executeUpdate(sql);
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtils.release(null, stmt, conn);
}
}
public ArrayList selectAll(){
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
ArrayList list = new ArrayList();
try {
conn = JDBCUtils.getConnection();
stmt = conn.createStatement();
String sql = "select * from users;";
rs = stmt.executeQuery(sql);
while (rs.next()){
int id = rs.getInt("id");
String username = rs.getString("username");
String password = rs.getString("password");
String nickname = rs.getString("nickname");
User user = new User(username, password, nickname);
list.add(user);
}
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtils.release(null, stmt, conn);
}
return list;
}
}
最后可以在 JDBCQuickStart
中使用:
public class JDBCQuickStart {
@Test
public void test(){
User user = new User("4shen", "123", "shenshen");
JDBCCRUD userDao = new JDBCCRUD();
userDao.insert(user);
}
}
其中在执行 mysql 语句的对象 statement 还可以执行对语句进行预处理和批处理。具体实现交给小伙伴尝试了。
网友评论