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语句PreparedStatementString sql="select* from user";PreparedStatement ps=conn.prepareStatement(sql);ResultSet rs = ps.executeQuery();//处理执行结果集ResultSetwhile(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驱动程序并建立数据库连接Connectionprivate static Connection getConnection() throws ClassNotFoundException,SQLException {//注册JDBC驱动程序Class.forName("com.mysql.cj.jdbc.Driver");String url="jdbc:mysql://localhost:3306/db";//建立数据库连接ConnectionConnection 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;}}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PMP考试

一、关于准考信下载 为确保您顺利进入考场参加xxx月份考试&#xff0c;请及时登录本网站个人系统下载并打印准考信&#xff0c;准考信下载时间为xxx-xxx。如通过以上方式无法查找准考信&#xff0c;请您及时拨打所在考点老师联系电话&#xff0c;如有特殊问题&#xff0c;请发…

1143. 最长公共子序列

给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是由原字符串在不改变字符的相对顺序的情况下删除某些字符&#xff08;也可以…

限时开发、码力全开、2w奖金!AGI Hackathon等你挑战!

AGI时代&#xff0c;我们已不再满足于简单的产品开发&#xff0c;与大模型结合的无限想象力&#xff0c;成为开发者们新的追求。 你有能力将想法转化为现实吗&#xff1f;你有勇气接受挑战&#xff0c;创造全新的AI应用吗&#xff1f; 如果你有热情&#xff0c;有信心&#x…

老知识复盘-SQL从提交到执行到底经历了什么 | 京东云技术团队

一、什么是SQL sql(Structured Query Language: 结构化查询语言)是高级的费过程化编程语言,允许用户在高层数据结构上工作, 是一种数据查询和程序设计语言, 也是(ANSI)的一项标准的计算机语言. but… 目前仍然存在着许多不同版本的sql语言,为了与ANSI标准相兼容, 它们必须以相…

迪杰斯特拉算法(C++)

目录 介绍&#xff1a; 代码&#xff1a; 结果&#xff1a; 介绍&#xff1a; 迪杰斯特拉算法&#xff08;Dijkstras algorithm&#xff09;是一种用于计算加权图的单点最短路径的算法。它是由荷兰计算机科学家Edsger W. Dijkstra在1956年发明的。 该算法的思路是&#xf…

振南技术干货集:制冷设备大型IoT监测项目研发纪实(4)

注解目录 1.制冷设备的监测迫在眉睫 1.1 冷食的利润贡献 1.2 冷设监测系统的困难 &#xff08;制冷设备对于便利店为何如何重要&#xff1f;了解一下你所不知道的便利店和新零售行业。关于电力线载波通信的论战。&#xff09; 2、电路设计 2.1 防护电路 2.1.1 强电防护 …

11月22日星期三今日早报简报微语报早读

11月22日星期三&#xff0c;农历十月初十&#xff0c;早报微语早读。 1、我国自主研发气象无人艇实现首次海上云雾立体观测。 2、国家统计局与国家医疗保障局签署数据共享利用合作协议。 3、三部门&#xff1a;加强全国重点文物保护单位内古树名木保护。 4、油价4连降&#xf…

Java 1.0 到 Java 17历程

Java 自 1995 年发布以来&#xff0c;经历了多个版本的更新&#xff0c;每个版本都引入了新的特性和改进。以下是从 Java 1.0 到 Java 17&#xff08;截至我所掌握的最新信息&#xff09;的主要新特性概览&#xff1a; Java 1.0 (1996) 初始版本&#xff0c;包含了Java的基础…

VSCode配置用户代码段以及常用快捷键汇总

一&#xff1a;前言 VSCode 是一款由微软开发的轻量级编辑器&#xff0c;可以安装插件和兼容多种语言。其本身已经是目前前端开发所使用的主流软件。那么在开发过程中&#xff0c;我们经常要写很多重复性的代码&#xff0c;比如当你去新建一个 .vue 页面的时候&#xff0c;往往…

在Ubuntu18.04安装适合jdk8的eclipse

直接在Ubuntu软件那里下载的eclipse不能用&#xff0c;下载后启动会报错&#xff1a;Eclipse An error has occurred. See the log file/home/hadoop/.eclipse/ org.eclipse.platform_3.8_155965261/ configuration/1700567835954.log 上网搜索方法&#xff0c;按教程说的修改e…

Deepmind开发音频模型Lyria 用于生成高品质音乐;创建亚马逊新产品评论摘要

&#x1f989; AI新闻 &#x1f680; Deepmind开发音频模型Lyria 用于生成高品质音乐 摘要&#xff1a;Deepmind推出名为Lyria的音频模型&#xff0c;可生成带有乐器和人声的高品质音乐。Lyria模型针对音乐生成的挑战&#xff0c;解决了音乐信息密度高、音乐序列中的连续性维…

redis的一些操作

文章目录 清空当前缓存和所有缓存配置内存大小&#xff0c;防止内存饱满设置内存淘汰策略键过期机制 清空当前缓存和所有缓存 Windows环境下使用命令行进行redis缓存清理 redis安装目录下输入cmdredis-cli -p 端口号flushdb 清除当前数据库缓存flushall 清除整个redis所有缓存…

【Linux】深入理解系统文件操作(1w字超详解)

1.系统下的文件操作&#xff1a; ❓是不是只有C\C有文件操作呢&#xff1f;&#x1f4a1;Python、Java、PHP、go也有&#xff0c;他们的文件操作的方法是不一样的啊 1.1对于文件操作的思考&#xff1a; 我们之前就说过了&#xff1a;文件内容属性 针对文件的操作就变成了对…

阿里云云盘IOPS与IO吞吐

1、云盘IOPS 存储类别ESSD云盘SSD云盘性能级别PL3PL2PL1无 最大IOPS计算公式 &#xff08;存储空间单位&#xff1a;GB&#xff09; min{180050*存储空间, 1000000, 实例规格最大IOPS}min{180050*存储空间, 100000, 实例规格最大IOPS}min{180050*存储空间, 50000, 实例规格最大…

悄悄上线:CSS @starting-style 新规则

最近 Chrome 117&#xff0c;CSS 又悄悄推出了一个新的的规则&#xff0c;叫做starting-style。从名称上来看&#xff0c;表示定义初始样式。那么&#xff0c;具体是做什么的&#xff1f;有什么用&#xff1f;一起了解一下吧 一、快速了解 starting-style 通常做一个动画效果…

µC/OS-II---中断相关名词

中断相关名词 中断和中断服务程序进入临界区和禁用中断任务的临界区代码和ISR的临界区代码 中断和中断服务程序 中断是指处理器在执行程序的过程中&#xff0c;由硬件或软件触发的一种事件。当中断事件发生时&#xff0c;处理器会立即中断当前的执行流程&#xff0c;保存当前的…

【用unity实现100个游戏之16】Unity中程序化生成的2D地牢5(附项目源码,完结)

文章目录 最终效果前言生成墙壁优化方法一、使用rule tile方法二、使用代码生成墙壁补充最终效果后续参考源码完结最终效果 前言 本期是本项目最后一期,主要是进行墙壁的生成优化和补充一下剩下了的其他内容 生成墙壁优化 方法一、使用rule tile 我这里大概给个rule tile参…

ASM字节码操作类库(打开java语言世界通往字节码世界的大门) | 京东云技术团队

前言&#xff1a;授人以鱼不如授人以渔&#xff0c;应用asm的文章有很多&#xff0c;简单demo的也很多&#xff0c;那么ASM都具备哪些能力呢&#xff1f;如何去学习编写ASM代码呢&#xff1f;什么样的情景需要用到ASM呢&#xff1f;让我们带着这些问题阅读这篇文章吧。 这里由…

abap qm01创建质检通知单相关bapi:IQS4_CREATE_NOTIFICATION

网上查找关于创建质检通知单相关bapi时&#xff0c;基本都是显示BAPI_QUALNOT_CREATE该函数&#xff0c;经查看&#xff0c;该函数缺少QF01缺陷记录的参数&#xff0c;比如检验批&#xff0c;退货数量等字段&#xff0c;同时即使该函数成功执行&#xff0c;生成的通知单也是有问…

搜索记录及使用缓存的设计思路

目录 背景&#xff1a; 思路: 问题 实现 背景&#xff1a; 最近业务写到检索这块的内容&#xff0c;设计到搜索记录的增删操作。考虑到频繁写库操作所以使用缓存技术 redis 和 cacha。 思路: 查询&#xff1a;先查内存查缓存在查询数据库&#xff0c;查询数据库先更新内存…