本文共 6309 字,大约阅读时间需要 21 分钟。
JDBC(Java Database Connectivity),即 Java 数据库连接,是 Java 程序连接访问数据库的基础技术。本文将结合 JDBC 技术实现简短案例,阐述核心内容及实践经验,助力开发者快速实现数据库操作。
JDBC 通常通过以下步骤完成数据库操作:
DriverManager.getConnection() 获取数据库连接。Statement 或 PreparedStatement 与数据库交互。jt_db 并建表 account:create table account ( id INT primary key auto_increment, name VARCHAR(50), money DOUBLE);insert into account values (null, 'tom', 1000), (null, 'andy', 1000), (null, 'tony', 1000);
java.sql.*Class.forName("com.mysql.jdbc.Driver")Connection conn = DriverManager.getConnection("jdbc:mysql:///jt_db?characterEncoding=utf-8", "root", "root")public class Test_JDBC1 { public static void main(String[] args) throws Exception { Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection( "jdbc:mysql:///jt_db?characterEncoding=utf-8", "root", "root" ); Statement stat = conn.createStatement(); String sql = "select * from account"; ResultSet rs = stat.executeQuery(sql); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); double money = rs.getDouble("money"); System.out.println(id + ", " + name + ", " + money); } rs.close(); stat.close(); conn.close(); }} 运行程序可以看到从数据库中读取到的记录。
JDBC 可以实现数据库的增删改查四种基本操作。
public class TestJDBC03 { //... 导入必要包... @Test public void testAdd() throws Exception { Connection conn = JdbcUtil.getConn(); Statement stat = conn.createStatement(); String sql = "insert into account value(null, 'john', 3500)"; int rows = stat.executeUpdate(sql); System.out.println("影响行数" + rows); stat.close(); conn.close(); }} public class TestJDBC03 { //... 导入必要包... @Test public void testUpdate() throws Exception { Connection conn = JdbcUtil.getConn(); Statement stat = conn.createStatement(); String sql = "update account set money = 1500 where name = 'john'"; int rows = stat.executeUpdate(sql); System.out.println("打印行数" + rows); stat.close(); conn.close(); }} public class TestJDBC03 { //... 导入必要包... @Test public void testDelete() throws Exception { Connection conn = JdbcUtil.getConn(); Statement stat = conn.createStatement(); String sql = "delete from account where name = 'john'"; int rows = stat.executeUpdate(sql); System.out.println("影响行数" + rows); stat.close(); conn.close(); }} public class TestJDBC03 { //... 导入必要包... @Test public void testFindById() throws Exception { Connection conn = JdbcUtil.getConn(); Statement stat = conn.createStatement(); String sql = "select * from account where id = 1"; ResultSet rs = stat.executeQuery(sql); if (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); double money = rs.getDouble("money"); System.out.println(id + ": " + name + ": " + money); } rs.close(); stat.close(); conn.close(); }} 使用 PreparedStatement 替代 Statement,通过设置预编译 SQL 语句,防止 SQL 注入攻击。
public class LoginUser2 { //... 导入必要包... private static void login(String user, String pwd) throws Exception { Connection conn = JdbcUtil.getConn(); PreparedStatement ps = conn.prepareStatement( "select * from user where username = ? and password = ?" ); ps.setString(1, user); ps.setString(2, pwd); ResultSet rs = ps.executeQuery(); if (rs.next()) { System.out.println("恭喜您登录成功!!!"); } else { System.out.println("登录失败!!用户名或密码不正确"); } rs.close(); ps.close(); conn.close(); }} 连接池(如 C3P0)能显著提升数据库连接管理效率,推荐在生产环境中使用。
1.切换到新的工作空间,设置编码为 UTF-8,确保руч cue 工作。2.配置项目编码为 UTF-8,避免字符集问题。
在 JSP 文件中,确保 <%@ page language="java"contentType="text/html;charset=UTF-8"%> 或 <meta charset="utf-8"> 存在。
create database jt_db;use jt_db;create table stu ( id int, name varchar(50), gender char(2), addr varchar(50), score double);insert into stu values(1001, '张三', '男', '北京', 86);
public class StudentManager { //... 审慎检查 Nhĩ steffer... private static void findAll() throws Exception { Connection conn = JdbcUtil.getConn(); PreparedStatement ps = conn.prepareStatement("select * from stu"); ResultSet rs = ps.executeQuery(); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); String gender = rs.getString("gender"); String addr = rs.getString("addr"); double score = rs.getDouble("score"); System.out.println(id + ", " + name + ", " + gender + ", " + addr + ", " + score); } rs.close(); ps.close(); conn.close(); }} public class StudentManager { //... 导入必要包... private static void addStu() throws Exception { System.out.println("请输入新学生信息(编号、姓名、性别、地址、成绩):"); int id = sc.nextInt(); sc.nextLine(); String name = sc.nextLine(); String gender = sc.nextLine().toUpperCase(); String addr = sc.nextLine(); double score = sc.nextDouble(); Connection conn = JdbcUtil.getConn(); PreparedStatement ps = conn.prepareStatement( "insert into stu values(?,?,?,?,?)" ); ps.setInt(1, id); ps.setString(2, name); ps.setString(3, gender); ps.setString(4, addr); ps.setDouble(5, score); int rows = ps.executeUpdate(); if (rows > 0) { System.out.println("添加成功!"); } else { System.out.println("失败。请检查输入是否正确。"); } ps.close(); conn.close(); }} 通过以上实例,可以逐步掌握 JDBC 技术的使用方法,并在开发过程中灵活运用,提升数据库操作的效率和安全性。内容结合自适应改进,为普通开发者提供有价值的参考和实践经验。
转载地址:http://fvwhz.baihongyu.com/