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<User> searchAll() throws ClassNotFoundException, SQLException{
		
		List<User>users=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;
	}

	
}

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值