Javaweb实现数据库简单的增删改查

JDBC介绍

JDBC ( Java Data Base Connectivity ) 是一 种 Java 访问 数据库 的技术,它提供 执行 SQL 语句的 Java API ,由 一组 类 和接口组成,可以为 不同的 数据库提供统一访问

JDBC工作原理

JDBC应用编程

1、准备工作

安装 MySQL 创建数据库 ( db ) 及表 (user) 的结构、插入一条数据(可借助工具) 项目中引入连接 MySQL 的 JDBC 驱动 Jar 文件。 不同版本的 MySQL ,其 JDBC 驱动文件不同。 在 MyEclipse 的数据库浏览器视图 下,可视化方式创建 MySQL 数据库的连接。 这一步不是 必需的 , 也可使用 navicat  for MySQL 等工具 。但是创建 连接的 作用是, JDBC 编程需要 使用这些连接参数

2、JDBC编程步骤

(1)注册JDBC驱动程序

Class.forName("com.mysql.jdbc.Driver");

或者DriverManager.registerDriver(new com.mysql.jdbc.Driver());

Class.forName () 方法是要求 JVM 查找并加载指定的类到内存 中 MySQL 5.6/5.7 的 JDBC 驱动 类: com.mysql.jdbc.Driver MySQL 8.0 的驱动类: com.mysql.cj.jdbc.Driver

(2)建立数据库连接Connection

String url="jdbc:mysql://localhost:3306/db";

String user="root";

String password="mysqladmin";

Connection conn=DriverManager.getConnection(url, user, password);

Connection 是 java.sql 包中的一个接口 通过调用 DriverManager 的静态方法 getConnection 可以创建 Connection 对象

(3)创建并执行SQL语句Statement实际应用我们用的是PreparedStatement 

Statement stmt=conn.createStatement(); //conn为上一步创建的连接

String sql="select * from user";

ResultSet rs=stmt.executeQuery(sql);

Connection 接口的 createStatement () 用于创建语句 Statement Statement 接口的 executeQuery (String sql ) 方法用于执行 sql 查询,返回值为 ResultSet 接口类型。

(4)处理执行结果集ResultSet

while(rs.next()){ //rs为上一步返回的结果集

    String name=rs.getString("username");

    String pass=rs.getString("password");

    System.out.printf("用户名:%s,口令:%s\n",name,pass);

}

结果集的 next() 方法返回一个 boolean 值 ,没有到达记录末尾时 ,返回 true ,否则返回 false 。

结果集的getString(String columnLabel) ,该方法根据表中的列名获取当前记录指定列的值

(5)释放资源

rs.close();      //关闭结果集

stmt.close();  //关闭语句

conn.close();  //关闭连接

关闭资源的顺序是先 关闭结果 集,再 关闭 语句,最后 关闭 连接,后创建的先关闭。(与创建的顺序相反)

JDBC实现增加、删除和修改操作

开发工具:myeclipse2014、MySQL8.0【MySQL】MySQL8.0安装教程: https://blog.csdn.net/Trista_1999/article/details/132678207

文件结构:

User类:

package javabean;
public class User {
	private String username;
	private String password;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}

UserDAO类:实现数据库连接和增删改查

package javabean;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class UserDAO {
	//查询
	public static List searchAll() throws ClassNotFoundException, SQLException{
		
		Listusers=new ArrayList<>();
		//注册JDBC驱动程序
		Connection conn = getConnection();
		//创建并执行SQL语句PreparedStatement
		String sql="select* from user";
		PreparedStatement ps=conn.prepareStatement(sql);
		
		ResultSet rs = ps.executeQuery();
		//处理执行结果集ResultSet
		while(rs.next()){
			String username = rs.getString("username");
			String password = rs.getString("password");
			User user=new User();
			user.setUsername(username);
			user.setPassword(password);
			users.add(user);
		}
		//释放资源
		rs.close();
		ps.close();
		conn.close();
		
		return users;
	}
	//getConnection函数,注册JDBC驱动程序并建立数据库连接Connection
	private static Connection getConnection() throws ClassNotFoundException,
			SQLException {
		//注册JDBC驱动程序
		Class.forName("com.mysql.cj.jdbc.Driver");
		String url="jdbc:mysql://localhost:3306/db";
		//建立数据库连接Connection
		Connection conn=DriverManager.getConnection(url, "root", "root");
		return conn;
	}
	//添加
	public boolean add(User user) throws SQLException, ClassNotFoundException{
		Connection conn = getConnection();
		String sql="insert into user(username,password) values (?,?)";
		
		PreparedStatement ps=conn.prepareStatement(sql);
		ps.setString(1, user.getUsername());
		ps.setString(2, user.getPassword());
		
		System.out.print(sql);
		int res=ps.executeUpdate();
		ps.close();
		conn.close();
		return res==1;
	}
	//更新
	public boolean update(User user) throws SQLException, ClassNotFoundException{
		Connection conn = getConnection();
		String sql="update user  password=? where username=?";
		
		PreparedStatement ps=conn.prepareStatement(sql);
		ps.setString(1, user.getPassword());
		ps.setString(2, user.getUsername());
		
		System.out.print(sql);
		int res=ps.executeUpdate();
		ps.close();
		conn.close();
		return res==1;
	}
	//删除
	public boolean delete(String username) throws SQLException, ClassNotFoundException{
		Connection conn = getConnection();
		String sql="delete from user where username=?";
		
		PreparedStatement ps=conn.prepareStatement(sql);
		ps.setString(1, username);
		
		System.out.print(sql);
		int res=ps.executeUpdate();
		ps.close();
		conn.close();
		return res==1;
	}
	
}