本实验报告涵盖了JDBC数据库访问技术和Java Web数据库访问技术。报告详细描述了基于JDBC技术的Java Web数据库访问实验过程,包括环境搭建、代码编写、测试及结果分析,旨在加深对JDBC数据库访问技术的理解与应用。
本文目录导读:
实验背景与目的
随着互联网技术的飞速发展,Java Web应用程序在各个领域得到了广泛的应用,数据库作为应用程序的核心组件,其性能和稳定性直接影响到整个系统的运行效果,本实验旨在通过JDBC(Java Database Connectivity)技术,实现Java Web应用程序对数据库的访问与操作,提高数据库访问效率,确保数据的安全性和可靠性。
实验环境
1、操作系统:Windows 10
2、开发工具:IntelliJ IDEA
3、数据库:MySQL 5.7
图片来源于网络,如有侵权联系删除
4、JDK版本:1.8
5、数据库驱动:mysql-connector-java-5.1.47-bin.jar
1、创建数据库和表
在MySQL数据库中创建一个名为“experiment”的数据库,然后在该数据库中创建一个名为“student”的表,用于存储学生信息,表结构如下:
CREATE TABLE student ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), age INT, gender VARCHAR(10) );
2、JDBC连接数据库
图片来源于网络,如有侵权联系删除
在Java项目中,首先需要导入数据库驱动jar包,编写以下代码实现JDBC连接数据库:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class JDBCDemo { public static void main(String[] args) { Connection conn = null; try { // 加载数据库驱动 Class.forName("com.mysql.jdbc.Driver"); // 连接数据库 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/experiment", "root", "root"); System.out.println("连接成功!"); } catch (ClassNotFoundException e) { System.out.println("找不到数据库驱动类!"); e.printStackTrace(); } catch (SQLException e) { System.out.println("连接数据库失败!"); e.printStackTrace(); } } }
3、数据库操作
在连接数据库成功后,可以进行以下操作:
(1)查询数据
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class JDBCDemo { public static void main(String[] args) { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { // 加载数据库驱动 Class.forName("com.mysql.jdbc.Driver"); // 连接数据库 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/experiment", "root", "root"); // 创建PreparedStatement对象 String sql = "SELECT * FROM student"; ps = conn.prepareStatement(sql); // 执行查询 rs = ps.executeQuery(); // 遍历结果集 while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); int age = rs.getInt("age"); String gender = rs.getString("gender"); System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age + ", Gender: " + gender); } } catch (ClassNotFoundException e) { System.out.println("找不到数据库驱动类!"); e.printStackTrace(); } catch (SQLException e) { System.out.println("查询数据失败!"); e.printStackTrace(); } finally { // 关闭资源 try { if (rs != null) rs.close(); if (ps != null) ps.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
(2)插入数据
图片来源于网络,如有侵权联系删除
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; public class JDBCDemo { public static void main(String[] args) { Connection conn = null; PreparedStatement ps = null; try { // 加载数据库驱动 Class.forName("com.mysql.jdbc.Driver"); // 连接数据库 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/experiment", "root", "root"); // 创建PreparedStatement对象 String sql = "INSERT INTO student (name, age, gender) VALUES (?, ?, ?)"; ps = conn.prepareStatement(sql); // 设置参数 ps.setString(1, "张三"); ps.setInt(2, 20); ps.setString(3, "男"); // 执行插入 int count = ps.executeUpdate(); if (count > 0) { System.out.println("插入数据成功!"); } else { System.out.println("插入数据失败!"); } } catch (ClassNotFoundException e) { System.out.println("找不到数据库驱动类!"); e.printStackTrace(); } catch (SQLException e) { System.out.println("插入数据失败!"); e.printStackTrace(); } finally { // 关闭资源 try { if (ps != null) ps.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
(3)更新数据
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; public class JDBCDemo { public static void main(String[] args) { Connection conn = null; PreparedStatement ps = null; try { // 加载数据库驱动 Class.forName("com.mysql.jdbc.Driver"); // 连接数据库 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/experiment", "root", "root"); // 创建PreparedStatement对象 String sql = "UPDATE student SET name = ?, age = ?, gender = ? WHERE id = ?"; ps = conn.prepareStatement(sql); // 设置参数 ps.setString(1, "李四"); ps.setInt(2, 21); ps.setString(3, "男"); ps.setInt(4, 1); // 执行更新 int count = ps.executeUpdate(); if (count > 0) { System.out.println("更新数据成功!"); } else { System.out.println("更新数据失败!"); } } catch (ClassNotFoundException e) { System.out.println("找不到数据库驱动类!"); e.printStackTrace(); } catch (SQLException e) { System.out.println("更新数据失败!"); e.printStackTrace(); } finally { // 关闭资源 try { if (ps != null) ps.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
(4)删除数据
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; public class JDBCDemo { public static void main(String[] args) { Connection conn = null; PreparedStatement ps = null; try { // 加载数据库驱动 Class.forName("com.mysql.jdbc.Driver"); // 连接数据库 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/experiment", "root", "root"); // 创建PreparedStatement对象 String sql = "DELETE FROM student WHERE id = ?"; ps = conn.prepareStatement(sql); // 设置参数 ps.setInt(1, 1); // 执行删除 int count = ps.executeUpdate(); if (count > 0) { System.out.println("删除数据成功!"); } else { System.out.println("删除数据失败!"); } } catch (ClassNotFoundException e) { System.out.println("找不到数据库驱动类!"); e.printStackTrace(); } catch (SQLException e) { System.out.println("删除数据失败!"); e.printStackTrace(); } finally { // 关闭资源 try { if (ps != null) ps.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
通过本次实验,我们掌握了JDBC技术在Java Web应用程序中访问数据库的方法,在实际开发过程中,我们需要根据具体需求,选择合适的数据库访问方式,以提高数据库访问效率,确保数据的安全性和可靠性,在实际开发中,还需注意异常处理、资源释放等问题,以避免程序出现错误。
标签: #实验报告编写指南
评论列表