JavaWeb开发之JDBC
Posted luojack
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb开发之JDBC相关的知识,希望对你有一定的参考价值。
项目搭建的包命名和类命名:
首先导入数据库的驱动架包,并添加依赖
1.Dao层是专门负责和数据库交互,数据处理的代码层
2.Dao是接口,DaoImpl是Dao接口的实现类
3.Java代码连接数据库的步骤:“贾琏欲执事”口诀
(1)贾:加载数据库注册驱动,将数据库驱动注册到DriverManager中去。
Class.forName("com.mysql.jdbc.Driver");
(2)琏:创建连接数据库的对象,通过DriverManager获取
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcdemo", "root", "123456");
(3)欲:创建预编译或非预编译 SQL语句对象
String sql="update t_student set name = ?,age = ? where id = ?";
PrepardStatment ps =conn.preparedStatment(sql);
ps.setString(1,"小明");
ps.setInt(2,20);
ps.setInt(3,2);
(4)执:执行SQL语句
int row =ps.executeUpdate();
(5)事:释放资源(先创后放)
conn.close();
ps.close();
具体代码:
@Override public int insert(Student stu) { String sql = "insert into t_student(name,age)values(?,?)"; Connection conn = null; PreparedStatement ps = null; try { // 1.加载注册驱动 Class.forName("com.mysql.jdbc.Driver"); // 2.获取数据库连接对象 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcdemo", "root", "root"); // 3.创建预编译语句对象 ps = conn.prepareStatement(sql); // 3.1设置预编译语句对象占位符对应的参数值 ps.setString(1, stu.getName()); ps.setInt(2, stu.getAge()); // 4.执行SQL语句 (注意:方法不能带sql参数) int row = ps.executeUpdate(); return row; } catch (Exception e) { e.printStackTrace(); } finally { try { if (ps != null) { ps.close(); } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } return 0; } @Override public int delete(Integer id) { String sql = "delete from t_student where id = ?"; Connection conn = null; PreparedStatement ps = null; try { // 1.加载注册驱动 Class.forName("com.mysql.jdbc.Driver"); // 2.获取数据库连接对象 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcdemo", "root", "root"); // 3.创建预编译语句对象 ps = conn.prepareStatement(sql); // 3.1设置预编译语句对象占位符对应的参数值 ps.setInt(1, id); // 4.执行SQL语句 (注意:方法不能带sql参数) int row = ps.executeUpdate(); return row; } catch (Exception e) { e.printStackTrace(); } finally { try { if (ps != null) { ps.close(); } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } return 0; } @Override public int update(Student stu) { String sql = "update t_student set name = ?,age = ? where id = ?"; Connection conn = null; PreparedStatement ps = null; try { // 1.加载注册驱动 Class.forName("com.mysql.jdbc.Driver"); // 2.获取数据库连接对象 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcdemo", "root", "root"); // 3.创建预编译语句对象 ps = conn.prepareStatement(sql); // 3.1设置预编译语句对象占位符对应的参数值 ps.setString(1, stu.getName()); ps.setInt(2, stu.getAge()); ps.setInt(3, stu.getId()); // 4.执行SQL语句 (注意:方法不能带sql参数) int row = ps.executeUpdate(); return row; } catch (Exception e) { e.printStackTrace(); } finally { try { if (ps != null) { ps.close(); } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } return 0; } @Override public Student selectByPrimaryKey(Integer id) { String sql = "select * from t_student where id = ?"; Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { // 1.加载注册驱动 Class.forName("com.mysql.jdbc.Driver"); // 2.获取数据库连接对象 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcdemo", "root", "root"); // 3.创建预编译语句对象 ps = conn.prepareStatement(sql); ps.setInt(1, id); // 4.执行sql语句 rs = ps.executeQuery(); while (rs.next()) { String name = rs.getString("name"); int age = rs.getInt("age"); // 封装Student对象 Student stu = new Student(id, name, age); //返回Student对象 return stu; } } catch (Exception e) { e.printStackTrace(); } finally { try { if (rs != null) { rs.close(); } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (ps != null) { ps.close(); } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } } return null; } @Override public List<Student> selectList() { List<Student> students = new ArrayList<>(); String sql = "select * from t_student"; Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { // 1.加载注册驱动 Class.forName("com.mysql.jdbc.Driver"); // 2.获取数据库连接对象 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbcdemo", "root", "root"); // 3.创建预编译语句对象 ps = conn.prepareStatement(sql); // 4.执行sql语句 rs = ps.executeQuery(); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); int age = rs.getInt("age"); // 封装Student对象 Student stu = new Student(id, name, age); // 学生对象添加到集合中 students.add(stu); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (rs != null) { rs.close(); } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (ps != null) { ps.close(); } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } } return students; }
以上是关于JavaWeb开发之JDBC的主要内容,如果未能解决你的问题,请参考以下文章
JAVAWEB开发之Hibernate详解——Hibernate的框架概述开发流程CURD操作和核心配置与API以及Hibernate日志的使用