JDBC学习笔记
java程序操作数据库
JDBC使用
样例代码
import org.junit.jupiter.api.Test;import java.sql.*;public class jdbctest {@Testpublic void testUpdate() throws ClassNotFoundException, SQLException {//1.注册驱动Class.forName("com.mysql.cj.jdbc.Driver");//2.获取数据库连接String url="jdbc:mysql://localhost:3306/web01";String username="root";String password="Sql";Connection connection = DriverManager.getConnection(url,username,password);//3.获取SQL语句执行对象Statement statement = connection.createStatement();//4.执行SQL语句int i=statement.executeUpdate("update user set age = 25 where id=1");System.out.println(i);//5.释放资源statement.close();connection.close();}
}
查询数据
package cc.feitwnd;import cc.feitwnd.pojo.User;
import org.junit.jupiter.api.Test;import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
import java.util.logging.Level;public class jdbctest {private static final Logger logger = Logger.getLogger(jdbctest.class.getName());@Testpublic void testUpdate() throws ClassNotFoundException, SQLException {//1.注册驱动Class.forName("com.mysql.cj.jdbc.Driver");//2.获取数据库连接String url="jdbc:mysql://localhost:3306/web01";String username="root";String password="";Connection connection = DriverManager.getConnection(url,username,password);//3.获取SQL语句执行对象Statement statement = connection.createStatement();//4.执行SQL语句int i=statement.executeUpdate("update user set age = 25 where id=1");System.out.println(i);//5.释放资源statement.close();connection.close();}@Test// SQL方言配置,解决"未配置 SQL 方言"警告@SuppressWarnings("java:S2077")public void testSelect() throws ClassNotFoundException {//1.注册驱动Class.forName("com.mysql.cj.jdbc.Driver");// 数据库连接信息String url = "jdbc:mysql://localhost:3306/web01";String username = "root";String password = "";// SQL语句(使用预编译占位符防止SQL注入)String sql = "SELECT id, username, password, age FROM user WHERE username = ? AND password = ?";try (// 1. 获取数据库连接Connection conn = DriverManager.getConnection(url, username, password);// 2. 创建PreparedStatement(预编译防止SQL注入)PreparedStatement pstmt = conn.prepareStatement(sql);) {// 3. 设置查询参数pstmt.setString(1, "daqiao");pstmt.setString(2, "123456");// 4. 执行查询try (ResultSet rs = pstmt.executeQuery()) {List<User> users = new ArrayList<>();// 5. 遍历结果集while (rs.next()) {// 6. 封装User对象User user = new User();user.setId(rs.getInt("id"));user.setUsername(rs.getString("username"));user.setPassword(rs.getString("password"));user.setAge(rs.getInt("age"));users.add(user);}// 7. 输出结果到控制台if (users.isEmpty()) {System.out.println("未找到匹配的用户记录");} else {users.forEach(System.out::println);}}} catch (SQLException e) {// 替换printStackTrace()为更可靠的日志记录方式logger.log(Level.SEVERE, "数据库查询出错", e);}}
}
预编译SQL