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

	
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/173796.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

北醒携全球首款256线车规量产激光雷达亮相广州国际车展

11月17日&#xff0c;北醒携全球首款256线车规量产激光雷达亮相广州国际车展。在车展期间&#xff0c;北醒还公布了与广州花都区人民政府达成投资合作&#xff0c;获滴滴自动驾驶投资以及与捷普联合打造的全球首条量产256线级别车规激光雷达的生产线即将贯通的等多条利好信息&a…

快时尚品牌Halara登上TikTok美国小店榜Top 5,运动健身风靡TikTok

TikTok Shop美国电商数据周榜&#xff08;11/06-12&#xff09;已出&#xff0c;具体信息如下&#xff1a; 上周总GMV达到5850万美元&#xff0c;日均出单840万美元&#xff1b;单日出单最高达2110万美元&#xff0c;是当前美国单日最高销售额&#xff1b; 截至11月12日&…

Postman接口测试 —— 设置断言和集合运行

一、常见的5种断言方法 Postman是一款非常强大的API接口调式工具&#xff0c;它自带断言方法&#xff0c;不需要学习JavaScript脚本&#xff0c;非常方便。 &#xff08;1&#xff09;Status code&#xff1a;Code is 200(校验接口返回结果的状态码) &#xff08;2&#xff09…

轻松答题:用Python编写网页自动答题脚本助你高分通过

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 环境使用: Python 3.10 解释器 Pycharm 编辑器 模块使用: from selenium import webdriver —> 自动测试模块 pip install selenium3.141.0 <指定版本安…

Apache DolphinScheduler 3.0.0 升级到 3.1.8 教程

安装部署的流程可参考官网的文档 Version 3.1.8/部署指南/伪集群部署(Pseudo-Cluster) https://dolphinscheduler.apache.org/zh-cn/docs/3.1.8/guide/installation/pseudo-cluster 本文开始之前&#xff0c;我先补充说明一下升级 Apache DolphinScheduler 的几个关键点 元数…

C++——异常

作者&#xff1a;几冬雪来 时间&#xff1a;2023年11月21日 内容&#xff1a;C板块异常讲解 目录 前言&#xff1a; 异常&#xff1a; C语言传统处理错误的方式&#xff1a; 捕获异常&#xff1a; 异常的相关特性&#xff1a; string与抛异常: catch(...)&#xff1a; …

Monoxide relay机制和连弩挖矿

这篇文章就两个点&#xff0c;relay机制 、 连弩挖矿 relay 最终原子性 Eventual Atomicity 一笔跨链交易&#xff0c;从取款shard中发出&#xff0c;到存款shard中. 当收款shard中将这笔夸片交易打包上链后&#xff0c;原子性才执行结束。 这样做的延迟是比较小的。 如何应…

基于单片机的空气质量实时监测系统(论文+源码)

1. 系统设计 通过文献和市场调查&#xff0c;本设计的实现方案框架是以单片机为核心控制处理器搭建外围的功能模块如温度传感器模块、湿度传感器检测模块、二氧化碳传感器检测设备模块、无线通信模块和蜂鸣器声光报警提示模块来实现&#xff0c;辅以显示模块来展示。 该系统通…

什么是神经网络(Neural Network,NN)

1 定义 神经网络是一种模拟人类大脑工作方式的计算模型&#xff0c;它是深度学习和机器学习领域的基础。神经网络由大量的节点&#xff08;或称为“神经元”&#xff09;组成&#xff0c;这些节点在网络中相互连接&#xff0c;可以处理复杂的数据输入&#xff0c;执行各种任务…

Find My自行车|苹果Find My技术与自行车结合,智能防丢,全球定位

自行车&#xff0c;这项古老而简单的交通工具&#xff0c;近年来在中国经历了一场令人瞩目的复兴。从城市的街头巷尾到乡村的田园小路&#xff0c;自行车成了一种新的生活方式&#xff0c;一个绿色出行的选择。中国的自行车保有量超过两亿辆&#xff0c;但是自行车丢失事件还是…

为什么需要MuleSoft?如何与Salesforce协同工作?

MuleSoft通过一个集成平台将应用程序及其数据(跨云和内部云)连接起来。这被称为iPaaS&#xff0c;可将云应用程序相互集成&#xff0c;以及与本地和传统应用程序集成。 MuleSoft非常适合希望过渡到云的组织&#xff0c;提供了一种强大的集成解决方案。随着组织越来越依赖云及其…

赞评论收藏分享格雷希尔用于机器手抓取的G80P系列自动化螺纹快速接头的应用领域

格雷希尔GripSeal快速密封连接器针对螺纹孔的快速密封有二种操作方式&#xff0c;手动操作和气压驱动;但随着科技的不断发展&#xff0c;机器手越来越多的代替人工在工位上操作&#xff0c;于是我们又研发出适用于机器手抓取的G80P系列自动化螺纹快速连接器&#xff0c;使用机器…

「MobileNet V3」70 个犬种的图片分类

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…

C 语言获取文件绝对路径

示例代码 1&#xff0c;不包含根目录绝对路径&#xff1a; #include <stdlib.h> #include <stdio.h>int main(void) {char *fileName "/Dev/test.txt";char *abs_path _fullpath(NULL, fileName, 0);printf("The absolute path is: %s\n", a…

【JavaEE初阶】 JavaScript基础语法——贰

文章目录 &#x1f332;条件语句&#x1f6a9;if 语句&#x1f6a9;三元表达式&#x1f6a9;switch&#x1f6a9;循环语句&#x1f388;while 循环&#x1f388;continue&#x1f388;break&#x1f388;for 循环 &#x1f340;数组&#x1f6a9;创建数组&#x1f6a9;获取数组…

2014年2月24日 Go生态洞察:FOSDEM 2014上的Go演讲精选

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

【教程】cpp转python Nanobind 实践 加速轻量版 pythonbind11

主要是尝试一下把c这边的函数封装打包给python用&#xff0c;选择nanobind的原因是&#xff1a;1. 优化速度快&#xff0c;2. 生成二进制包小&#xff0c;不过pythonbind11是更为广泛知道的&#xff0c;nanobind也是pythonbind11作者后续做的&#xff0c;可以查看作者写的 why …

多项式求和

题目描述 给定程序中 fun 函数的功能是&#xff1a;求出以下分数序列的前 n 项之和&#xff0c;并通过函数值返回 main 函数。 输入格式 输入参数。 输出格式 计算公式返回的结果。 输入输出样例 输入1 5 输出1 8.391667 python解&#xff1a; def fun(n):a1b2s0for…

【数据结构】HashMap 和 HashSet

目录 1.哈希表概念 2冲突 2.1概念 2.2 冲突-避免 2.3冲突-避免-哈希函数设计 2.4 冲突-避免-负载因子调节 ​编辑 2.5 冲突-解决-开散列/哈希桶 2.5冲突严重时的解决办法 3.实现 4.性能分析 5.与Java集合类的关系 1.哈希表概念 在顺序结构中&#xff0c;元素关键码和存…

风电场数字孪生-升压站BIM三维模型-obj格式

简介&#xff1a; 风电场中的升压站三维模型&#xff0c;obj格式&#xff0c;采用BIM技术建模&#xff0c;可应用于风电场三维数字孪生领域&#xff0c;用于对升压站进行漫游浏览&#xff1b;三维可视化场景应用&#xff1b;风电场三维设计模型。 下载地址 风电场数字孪生-升…