当前位置: 首页 > news >正文

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;
	}

	
}

相关文章:

  • IOS输入框聚焦会把内容区域顶起
  • 数据库管理变更工具
  • frp内网穿透配置以及相关端口、过程解释
  • API之 要求接口上传pdf 以 合同PDF的二进制数据,multpart方式上传
  • Pickcode:教孩子们编码的新视觉语言
  • 【机器学习】Nonlinear Independent Component Analysis - Aapo Hyvärinen
  • c# 基础语法
  • 注解案例:山寨Junit与山寨JPA
  • 合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(三)
  • 【11月比赛合集】48场可报名的数据挖掘大奖赛,任君挑选!
  • 第二十章 多线程
  • java面试-zookeeper
  • 【Linux】-进程间通信-共享内存(SystemV),详解接口函数以及原理(使用管道处理同步互斥机制)
  • 功能测试进阶建议,学习思路讲解
  • 每日一题:LeetCode-589.N叉树的前序遍历
  • Web前端—移动Web第三天(移动Web基础、rem、less、综合案例—极速问诊)
  • Zotero在word中插入带超链接的参考文献/交叉引用/跳转参考文献
  • 9 HDFS架构剖析
  • 论文阅读——DiffusionDet
  • 基于鹈鹕算法优化概率神经网络PNN的分类预测 - 附代码
  • 工人日报:应对“职场肥胖”,健康与减重同受关注
  • 竞彩湃|欧联杯决赛前,曼联、热刺继续划水?
  • A股三大股指低收:汽车股领涨,大金融走弱,两市成交近1.1万亿元
  • 北京警方:海淀发生小客车刮碰行人事故4人受伤,肇事司机已被查获
  • 六连板成飞集成:航空零部件业务收入占比为1.74%,市场环境没有重大调整
  • “异常”只停留在医院里,用艺术为“泡泡宝贝”加油