制作一份关于JDBC数据库的实验记录
时间: 2023-05-24 08:05:19 浏览: 176
实验记录:JDBC数据库
实验目的:
1. 学习JDBC数据库的基本概念;
2. 掌握JDBC连接数据库并进行CRUD操作。
实验环境:
1. JDK 1.8;
2. MySQL 8.0.
实验步骤:
1. 下载并安装MySQL数据库,创建一个名为"test"的数据库;
2. 编写Java代码,连接MySQL数据库:
```
public class DBUtil {
private static final String URL = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC&characterEncoding=utf-8";
private static final String USERNAME = "root";
private static final String PASSWORD = "root";
private static Connection conn = null;
static {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
return conn;
}
public static void closeConnection() {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
这段代码定义了一个DBUtil类,其中有两个静态方法:getConnection()返回一个连接对象,closeConnection()关闭连接。在getConnection()方法中使用了JDBC的api连接了MySQL数据库,注意:JDBC4.0以上版本中com.mysql.jdbc.Driver已经改成了com.mysql.cj.jdbc.Driver。
3. 创建一个表并插入数据:
```
public class CreateTable {
public static void main(String[] args) throws SQLException {
Connection conn = DBUtil.getConnection();
String sql = "CREATE TABLE COMPANY " +
"(ID INT PRIMARY KEY NOT NULL, " +
" NAME TEXT NOT NULL, " +
" AGE INT NOT NULL, " +
" ADDRESS CHAR(50), " +
" SALARY REAL)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.executeUpdate();
System.out.println("Created table in given database...");
sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " +
"VALUES (?, ?, ?, ?, ?)";
ps = conn.prepareStatement(sql);
ps.setInt(1, 1);
ps.setString(2, "Paul");
ps.setInt(3, 32);
ps.setString(4, "California");
ps.setFloat(5, 20000);
ps.executeUpdate();
ps.setInt(1, 2);
ps.setString(2, "Allen");
ps.setInt(3, 25);
ps.setString(4, "Texas");
ps.setFloat(5, 15000);
ps.executeUpdate();
ps.setInt(1, 3);
ps.setString(2, "Teddy");
ps.setInt(3, 23);
ps.setString(4, "Norway");
ps.setFloat(5, 20000);
ps.executeUpdate();
ps.setInt(1, 4);
ps.setString(2, "Mark");
ps.setInt(3, 25);
ps.setString(4, "Rich-Mond");
ps.setFloat(5, 65000);
ps.executeUpdate();
System.out.println("Inserted records into the table...");
}
}
```
这段代码中使用PreparedStatement对象执行SQL语句,这种方式比Statement更加安全,因为它可以避免SQL注入攻击。
4. 查询数据并输出结果:
```
public class SelectData {
public static void main(String[] args) throws SQLException {
Connection conn = DBUtil.getConnection();
String sql = "SELECT * FROM COMPANY";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while(rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
String address = rs.getString("address");
float salary = rs.getFloat("salary");
System.out.print("ID: " + id);
System.out.print(", Name: " + name);
System.out.print(", Age: " + age);
System.out.print(", Address: " + address);
System.out.println(", Salary: " + salary);
}
rs.close();
}
}
```
这段代码通过执行SELECT语句查询出了COMPANY表中的数据,并将结果输出到控制台。
5. 更新数据:
```
public class UpdateData {
public static void main(String[] args) throws SQLException {
Connection conn = DBUtil.getConnection();
String sql = "UPDATE COMPANY SET SALARY = ? WHERE ID = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setFloat(1, 30000);
ps.setInt(2, 1);
int rows = ps.executeUpdate();
System.out.println("Rows updated: " + rows);
}
}
```
这段代码通过执行UPDATE语句更新COMPANY表中的一条数据的薪资。
6. 删除数据:
```
public class DeleteData {
public static void main(String[] args) throws SQLException {
Connection conn = DBUtil.getConnection();
String sql = "DELETE FROM COMPANY WHERE ID = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, 2);
int rows = ps.executeUpdate();
System.out.println("Rows deleted: " + rows);
}
}
```
这段代码通过执行DELETE语句删除COMPANY表中的一条数据。
实验总结:
通过本次实验,我学习了JDBC数据库的基本概念,并掌握了JDBC连接数据库并进行CRUD操作的方法。在这个过程中,我了解了JDBC的各种API,并学会了使用它们操作数据库。通过实践,我发现使用JDBC操作数据库可以非常灵活,可以满足不同的需求。同时,我也注意到了JDBC的一些弊端,比如代码繁琐、容易出错等问题,但这些问题并不影响它在Java程序开发中的重要性和广泛应用。
阅读全文