从零开始:Java数据库编程实战教程,轻松掌握SQL与JDBC

引言
Java数据库编程是Java开发者必备的技能之一。掌握Java数据库编程,可以帮助开发者高效地操作数据库,实现数据的增删改查。本教程将从零开始,详细介绍Java数据库编程的相关知识,包括SQL语句和JDBC的使用方法,帮助读者轻松掌握Java数据库编程。
第1章:Java数据库编程基础
1.1 数据库概述
数据库是存储和管理数据的系统。常见的数据库类型包括关系型数据库(如MySQL、Oracle、SQL Server)和非关系型数据库(如MongoDB、Redis)。
1.2 SQL概述
SQL(Structured Query Language)是一种用于管理关系型数据库的编程语言。它包括数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)和数据查询语言(DQL)。
1.3 JDBC概述
JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API。它允许Java程序连接和操作各种关系型数据库。
第2章:Java数据库编程环境搭建
2.1 安装Java开发环境
首先,需要安装Java开发环境,包括JDK(Java开发工具包)和IDE(集成开发环境,如IntelliJ IDEA、Eclipse)。
2.2 安装数据库
选择一种关系型数据库,如MySQL,并按照官方文档进行安装。
2.3 配置数据库连接
在IDE中配置数据库连接,例如在IntelliJ IDEA中,可以通过Database工具窗口添加数据库连接。
第3章:SQL语句基础
3.1 数据定义语言(DDL)
DDL用于创建和修改数据库结构,例如创建表、修改表结构等。
CREATE TABLE IF NOT EXISTS users (
id INT PRIMARY KEY,
username VARCHAR(50),
password VARCHAR(50)
);
3.2 数据操纵语言(DML)
DML用于插入、更新、删除和查询数据。
— 插入数据
INSERT INTO users (id, username, password) VALUES (1, ‘user1’, ‘password1’);

— 更新数据
UPDATE users SET password = ‘newpassword’ WHERE id = 1;

— 删除数据
DELETE FROM users WHERE id = 1;

— 查询数据
SELECT * FROM users;
3.3 数据控制语言(DCL)
DCL用于控制数据库的访问权限,例如创建用户、授予权限等。
— 创建用户
CREATE USER ‘newuser’@’localhost’ IDENTIFIED BY ‘newpassword’;

— 授予权限
GRANT SELECT, INSERT, UPDATE, DELETE ON users TO ‘newuser’@’localhost’;
第4章:JDBC编程基础
4.1 JDBC连接数据库
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class JDBCExample {
public static void main(String[] args) {
Connection conn = null;
try {
Class.forName(“com.mysql.cj.jdbc.Driver”);
conn = DriverManager.getConnection(
“jdbc:mysql://localhost:3306/database_name”, “username”, “password”);
System.out.println(“数据库连接成功!”);
} catch (ClassNotFoundException e) {
System.out.println(“找不到JDBC驱动程序!”);
} catch (SQLException e) {
System.out.println(“数据库连接失败!”);
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
4.2 JDBC执行SQL语句
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class JDBCExample {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt = null;
try {
Class.forName(“com.mysql.cj.jdbc.Driver”);
conn = DriverManager.getConnection(
“jdbc:mysql://localhost:3306/database_name”, “username”, “password”);
String sql = “INSERT INTO users (id, username, password) VALUES (?, ?, ?)”;
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 1);
pstmt.setString(2, “user1”);
pstmt.setString(3, “password1”);
int affectedRows = pstmt.executeUpdate();
if (affectedRows > 0) {
System.out.println(“插入数据成功!”);
}
} catch (ClassNotFoundException e) {
System.out.println(“找不到JDBC驱动程序!”);
} catch (SQLException e) {
System.out.println(“数据库操作失败!”);
} finally {
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
第5章:高级JDBC编程
5.1 使用批处理执行SQL语句
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class JDBCExample {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstmt = null;
try {
Class.forName(“com.mysql.cj.jdbc.Driver”);
conn = DriverManager.getConnection(
“jdbc:mysql://localhost:3306/database_name”, “username”, “password”);
String sql = “INSERT INTO users (id, username, password) VALUES (?, ?, ?)”;
pstmt = conn.prepareStatement(sql);
for (int i = 1; i <= 10; i++) { pstmt.setInt(1, i); pstmt.setString(2, "user" + i); pstmt.setString(3, "password" + i); pstmt.addBatch(); } int[] affectedRows = pstmt.executeBatch(); System.out.println("批处理执行成功,受影响的行数:" + affectedRows.length); } catch (ClassNotFoundException e) { System.out.println("找不到JDBC驱动程序!"); } catch (SQLException e) { System.out.println("数据库操作失败!"); } finally { if (pstmt != null) { try { pstmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } } 5.2 使用事务管理 import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; public class JDBCExample { public static void main(String[] args) { Connection conn = null; PreparedStatement pstmt = null; try { Class.forName("com.mysql.cj.jdbc.Driver"); conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/database_name", "username", "password"); conn.setAutoCommit(false); // 禁用自动提交 String sql1 = "INSERT INTO users (id, username, password) VALUES (?, ?, ?)"; pstmt = conn.prepareStatement(sql1); pstmt.setInt(1, 1); pstmt.setString(2, "user1"); pstmt.setString(3, "password1"); pstmt.executeUpdate(); String sql2 = "UPDATE users SET password = ? WHERE id = ?"; PreparedStatement pstmt2 = conn.prepareStatement(sql2); pstmt2.setString(1, "newpassword"); pstmt2.setInt(2, 1); pstmt2.executeUpdate(); conn.commit(); // 提交事务 } catch (ClassNotFoundException e) { System.out.println("找不到JDBC驱动程序!"); } catch (SQLException e) { System.out.println("数据库操作失败!"); try { conn.rollback(); // 回滚事务 } catch (SQLException ex) { ex.printStackTrace(); } } finally { if (pstmt != null) { try { pstmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } } 总结 本教程从零开始,详细介绍了Java数据库编程的相关知识,包括SQL语句和JDBC的使用方法。通过学习本教程,读者可以轻松掌握Java数据库编程,为后续的Java项目开发打下坚实的基础。