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的主要内容,如果未能解决你的问题,请参考以下文章

20160406javaweb 之JDBC简单案例

JavaWeb学习总结--JDBC之批处理

JavaWeb之JDBC

JavaWeb之JDBC

JAVAWEB开发之Hibernate详解——Hibernate的框架概述开发流程CURD操作和核心配置与API以及Hibernate日志的使用

javaweb需要会啥技术