模板:JDBC 连接数据库并实现 CRUD

目录

前期准备:

1. 连接数据库

1.1 第一种

 1.2 第二种

2. 增加

3. 修改

4. 删除

5. 查询

5.1 查询某个记录

5.2 查询单列数据


使用时,直接复制再修改一些数据即可;

声明:在对文件/变量命名时,没有做到见名知意,后续会对代码改进,实在抱歉(不会被打死吧!);

前期准备:

参考详细演示部分:CSDNicon-default.png?t=O83Ahttps://mp.csdn.net/mp_blog/creation/editor/140002021

1. 连接数据库
1.1 第一种
import java.sql.*;public class JdbcTest {//记得类名与文件名保持一致//1.加载jdbc连接mysql的驱动public final static String driver="com.mysql.cj.jdbc.Driver";//2.连接MySQL数据库的地址public final static String url="jdbc:mysql://localhost:3306/shangguigu";//shangguigu为数据库名称//3.连接MySQL的用户名public final static String user="root";//4.连接MySQL的密码public final static String pwd="xxxxx";//输入自己数据库的密码//static 静态代码加载 jdbc 的驱动static {try{Class.forName(driver);} catch (ClassNotFoundException e) {throw new RuntimeException(e);}}//连接MySQL的连接对象public static Connection getConn(){try{return DriverManager.getConnection(url,user,pwd);} catch (SQLException e){e.printStackTrace();}return null;}//关闭连接,保证MySQL资源的释放,能够充分利用资源public static void close(ResultSet rs, PreparedStatement ps,Connection conn){try{if (rs != null){rs.close();}if (ps != null){ps.close();}if (conn != null){conn.close();}} catch (SQLException e) {throw new RuntimeException(e);}}//验证public static void main(String[] args) {System.out.println(getConn());}
}

 结果为一个地址,则连接成功;

C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=14436:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Test\java _test\jdbc_test0917\out\production\jdbc_test0917;C:\Test\java _test\jdbc_test0917\lib\mysql-connector-java-8.0.26.jar" JdbcTest
com.mysql.cj.jdbc.ConnectionImpl@3023df74进程已结束,退出代码0
 1.2 第二种

一般来说第一种较好;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;public class JavaCon {public static void main(String[] args) throws Exception {//注册驱动Class.forName("com.mysql.cj.jdbc.Driver");//获取连接对象String url="jdbc:mysql://localhost:3306/shangguigu";//3306/ 后面是连接的数据库的名字String username="root";String password="xxxxxx";// 填入自己数据库的密码Connection connection= DriverManager.getConnection(url,username,password);//获取执行SQL语句的对象Statement statement=connection.createStatement();//编写Sql语句,执行并返回结果集String sql=" select emp_id,emp_name,emp_salary,emp_age from t_emp";// 输入要查询的字段ResultSet resultSet=statement.executeQuery(sql);//处理结果,遍历 resultSet 结果集while (resultSet.next()){  //根据字段的名字和数据类型进行修改int id=resultSet.getInt("emp_id");String na=resultSet.getString("emp_name");String salary=resultSet.getString("emp_salary");int age=resultSet.getInt("emp_age");System.out.println(id+"\t"+na+"\t"+salary+"\t"+age);}//释放资源(先开后关)resultSet.close();statement.close();connection.close();}
}

结果为查询表格的内容,则连接成功:

C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=3911:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Test\java _test\jdbc-test9\out\production\jdbc-test9;C:\Test\java _test\jdbc-test9\lib\mysql-connector-java-8.0.26.jar" JDBC.JavaCon
1	王	8.1	6
2	李	9.3	1
3	张	7.5	2进程已结束,退出代码0

public class CRUD {//为方便接下来能够看懂,注意类名为 CRUD//一表一类private int emp_id;private String emp_name;private double emp_salary;private String emp_age;public int getEmp_id() {return emp_id;}public void setEmp_id(int emp_id) {this.emp_id = emp_id;}public String getEmp_name() {return emp_name;}public void setEmp_name(String emp_name) {this.emp_name = emp_name;}public double getEmp_salary() {return emp_salary;}public void setEmp_salary(double emp_salary) {this.emp_salary = emp_salary;}public String getEmp_age() {return emp_age;}public void setEmp_age(String emp_age) {this.emp_age = emp_age;}
}
2. 增加
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;public class CrudOperation {//为方便接下来能够看懂,注意类名//新增数据到数据库中,public boolean add(CRUD crud){//执行增删改查的SQL语句//连接MySQLConnection connection=JdbcTest.getConn();//预编译SQl执行String sql="insert into t_emp values (?,?,?,?)";//?相当于占位符,四个字段四个占位符try {PreparedStatement ps= connection.prepareStatement(sql);//根据要操作的表修改ps.setInt(1,crud.getEmp_id());ps.setString(2,crud.getEmp_name());ps.setDouble(3,crud.getEmp_salary());ps.setString(4,crud.getEmp_age());//执行操作更改boolean result=ps.executeUpdate()>0;//关闭数据库JdbcTest.close(null,ps,connection);return result;} catch (SQLException e) {throw new RuntimeException(e);}// return false;}public static void main(String[] args) {CRUD cr = new CRUD();cr.setEmp_id(10);//根据要操作的表修改cr.setEmp_name("熊大");cr.setEmp_salary(70.8);cr.setEmp_age("7");CrudOperation cp = new CrudOperation();if(cp.add(cr)){System.out.println("保存学生成功");}else {System.out.println("保存学生失败");}}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=4536:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Test\java _test\jdbc_test0917\out\production\jdbc_test0917;C:\Test\java _test\jdbc_test0917\lib\mysql-connector-java-8.0.26.jar" CrudOperation
保存学生成功进程已结束,退出代码0

 再检查一下:

3. 修改
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;public class Operation_Update {public boolean update(CRUD crud) {//执行增删改查的SQL语句//连接MySQLConnection connection = JdbcTest.getConn();//预编译SQl执行String sql = "update t_emp set emp_name=?,emp_salary=?,emp_age=? where emp_id=?";//?相当于占位符,四个字段四个占位符try {PreparedStatement ps = connection.prepareStatement(sql);//根据要操作的表修改//ps.setInt(1, crud.getEmp_id());ps.setString(1, crud.getEmp_name());ps.setDouble(2, crud.getEmp_salary());ps.setString(3, crud.getEmp_age());//多加一个修改的emp_idps.setInt(4, crud.getEmp_id());//执行操作更改boolean result = ps.executeUpdate() > 0;JdbcTest.close(null, ps, connection);return result;} catch (SQLException e) {throw new RuntimeException(e);}}public static void main(String[] args) {//修改学生信息CRUD cr1 = new CRUD();cr1.setEmp_id(10);//根据要操作的表修改cr1.setEmp_name("熊二");cr1.setEmp_salary(90.8);cr1.setEmp_age("9");Operation_add cp1 = new Operation_add();if(cp1.update(cr1)){System.out.println("修改学生成功");}else{System.out.println("修改学生失败");}}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=7593:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Test\java _test\jdbc_test0917\out\production\jdbc_test0917;C:\Test\java _test\jdbc_test0917\lib\mysql-connector-java-8.0.26.jar" Operation_Update
修改学生成功进程已结束,退出代码0

 

4. 删除
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;public class Operation_Delete {public boolean delete(int emp_id) {//执行增删改查的SQL语句//连接MySQLConnection connection = JdbcTest.getConn();//预编译SQl执行String sql = "delete from t_emp where emp_id=?";//?相当于占位符try {PreparedStatement ps = connection.prepareStatement(sql);ps.setInt(1,emp_id);//根据要操作的表修改//执行操作更改boolean result = ps.executeUpdate() > 0;//关闭数据库JdbcTest.close(null, ps, connection);return result;} catch (SQLException e) {throw new RuntimeException(e);}}//修改学生信息public static void main(String[] args) {Operation_Delete de=new Operation_Delete();if(de.delete(10)){System.out.println("删除学生成功");}else {System.out.println("删除学生失败");}}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=10541:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Test\java _test\jdbc_test0917\out\production\jdbc_test0917;C:\Test\java _test\jdbc_test0917\lib\mysql-connector-java-8.0.26.jar" Operation_Delete
删除学生成功进程已结束,退出代码0

 

5. 查询
5.1 查询某个记录
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class Operation_Query {public CRUD query(int emp_id) {//主键或其他字段//执行增删改查的SQL语句//连接MySQLConnection connection = JdbcTest.getConn();//预编译SQl执行String sql = "select * from t_emp where emp_id=?";//?相当于占位符try {PreparedStatement ps = connection.prepareStatement(sql);ps.setInt(1, emp_id);//根据要操作的表修改//执行操作更改ResultSet rs = ps.executeQuery();//创建对象,返回CRUD cr = new CRUD();while (rs.next()) {cr.setEmp_id(rs.getInt(1));cr.setEmp_name(rs.getString(2));cr.setEmp_salary(rs.getDouble(3));cr.setEmp_age(rs.getString(4));}//关闭数据库JdbcTest.close(rs, ps, connection);return cr;} catch (SQLException e) {e.printStackTrace();}return  null;}public static void main(String[] args) {Operation_Query oq=new Operation_Query();CRUD cr2=oq.query(1);System.out.println(cr2.getEmp_id()+"\t"+cr2.getEmp_salary()+"\t"+cr2.getEmp_name()+"\t"+cr2.getEmp_age());}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=1330:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Test\java _test\jdbc_test0917\out\production\jdbc_test0917;C:\Test\java _test\jdbc_test0917\lib\mysql-connector-java-8.0.26.jar" Operation_Query
1	8.1	王	6进程已结束,退出代码0

5.2 查询单列数据
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;public class Operation_Query_List {public List<CRUD> ger_all() {//主键或其他字段//执行增删改查的SQL语句//连接MySQLConnection connection = JdbcTest.getConn();//预编译SQl执行String sql = "select * from t_emp ";//?相当于占位符try {PreparedStatement ps = connection.prepareStatement(sql);//执行操作更改ResultSet rs = ps.executeQuery();//创建对象,返回List<CRUD> list = new ArrayList<CRUD>();while (rs.next()) {CRUD cr = new CRUD();cr.setEmp_id(rs.getInt(1));cr.setEmp_name(rs.getString(2));cr.setEmp_salary(rs.getDouble(3));cr.setEmp_age(rs.getString(4));
//                    当前对象存储到 list 集合中list.add(cr);}//关闭数据库JdbcTest.close(rs, ps, connection);return list;} catch (SQLException e) {e.printStackTrace();}return  null;}public static void main(String[] args) {Operation_Query_List ql=new Operation_Query_List();List<CRUD> list = ql.ger_all();for (CRUD cr : list){System.out.println(cr.getEmp_id()+"=》"+ cr.getEmp_name());}}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=5193:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Test\java _test\jdbc_test0917\out\production\jdbc_test0917;C:\Test\java _test\jdbc_test0917\lib\mysql-connector-java-8.0.26.jar" Operation_Query_List
1=》王
2=》李
3=》张进程已结束,退出代码0

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

CompletableFuture如何优雅处理异步任务超时!妙就完了

文章目录 1. 主要解决哪些业务痛点&#xff1f;2. 流程分析3. 上代码4. 总结一波 1. 主要解决哪些业务痛点&#xff1f; 小强最近一直没打黑神话悟空&#xff0c;闷闷不乐的&#xff0c;我问咋回事&#xff0c;最近有啥烦心事么? 他不爽的跟我说了当他CompletableFuture进行…

css基础知识笔记

一言&#xff1a; “放任误解就是撒谎。” 文章目录 前言文章有误敬请斧正 不胜感恩&#xff01;CSS基础教程0.文本样式基础1. CSS选择器2. CSS布局技巧3. 响应式设计4. Emmet语法 总结 前言 写在开始&#xff1a; 今天来看一眼CSS基础知识。 好几天没更新了 先更一篇 文章有…

华为OD机试 - 需要打开多少监控器(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

2024年最新网络协议分析器Wireshark抓包详细教程(更新中)

网络协议分析器 Wireshark 安装 Wireshark 是一个功能强大的网络协议分析器&#xff0c;早期叫作 Ethereal。它主要用于捕获网络数据包&#xff0c;并对这些数据包进行详细的解析和分析&#xff0c;帮助用户深入了解网络通信的细节。它支持多种网络协议&#xff0c;并提供详细…

银河麒麟桌面操作系统如何添加WPS字体

银河麒麟桌面操作系统如何添加WPS字体 1、使用场景2、操作方法步骤一&#xff1a;下载字体文件步骤二&#xff1a;打开终端步骤三&#xff1a;进入字体文件所在目录步骤四&#xff1a;拷贝字体文件到WPS字体目录步骤五&#xff1a;更新字体缓存步骤六&#xff1a;重启WPS Offic…

uni-app-通过vue-cli命令行快速上手

环境安装 全局安装 vue-cli npm install -g vue/cli创建uni-app 使用正式版&#xff08;对应HBuilderX最新正式版&#xff09; vue create -p dcloudio/uni-preset-vue my-project使用alpha版&#xff08;对应HBuilderX最新alpha版&#xff09; vue create -p dcloudio/uni-p…

Linux常用命令;Linux常用软件;Linux权限

一&#xff0c;常用命令 是人向计算机发送指令的语言。 命令的格式&#xff1a; 命令 [选项] [参数] 1、ls 展示当前目录下文件的命令 1、-l 展示详细信息。还有另外一种写法&#xff1a;ll&#xff08;字母 LL 小写&#xff09; 2、-S 按照文件大小倒序展示 3、-t…

1952. 三除数

目录 一&#xff1a;题目&#xff1a; 二&#xff1a;代码&#xff1a; 三&#xff1a;结果&#xff1a; 一&#xff1a;题目&#xff1a; 给你一个整数 n 。如果 n 恰好有三个正除数 &#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 如果存在整数 k &a…

【软件测试】性能测试-概念篇

目录 &#x1f334;什么是性能测试 &#x1f333;常见性能测试指标 &#x1f6a9;并发数 &#x1f6a9;吞吐量 &#x1f6a9;吞吐量分类 &#x1f3c0;按照请求分类:TPS和QTS &#x1f3c0;按照网络数据包划分:KB &#x1f6a9;响应时间 &#x1f6a9;资源利用率 &am…

SpringBoot启动流程之运行时监听器

SpringBoot启动过程&#xff1a; 上一节我们讨论SpringApplication实例化的过程&#xff0c;也就是上图1-5步骤&#xff0c;本节我们讨论6-9的关键步骤&#xff0c;现在主要讲是run方法里面的过程 /*** 启动方法* param args* return*/public ConfigurableApplicationContext …

基于JAVA+SpringBoot+Vue的景区民宿预约系统

基于JAVASpringBootVue的景区民宿预约系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码下载链接&#x1f345; 哈…

Mamba所需的causal-conv1d 和mamba-ssm库在哪下载?

背景介绍 参照 Mamba [state-spaces/mamba: Mamba SSM architecture (github.com)] github中提到的环境安装[Installation 一栏] [Option] pip install causal-conv1d>1.4.0: an efficient implementation of a simple causal Conv1d layer used inside the Mamba block.…

浙版传媒思迈特软件大数据分析管理平台建设项目正式启动

近日&#xff0c;思迈特软件与出版发行及电商书城领域的领军企业——浙江出版传媒股份有限公司&#xff0c;正式启动大近日&#xff0c;思迈特软件与出版发行及电商书城领域的领军企业——浙江出版传媒股份有限公司&#xff0c;正式启动大数据分析管理平台建设项目。浙版传媒相…

华为HarmonyOS灵活高效的消息推送服务(Push Kit) - 2 开通推送服务与配置Client ID

在开通推送服务前&#xff0c;请先参考“应用开发准备”完成基本准备工作&#xff0c;再继续进行以下开发活动。 说明 从HarmonyOS NEXT Developer Beta2起&#xff0c;开发者无需配置公钥指纹和Client ID。 操作步骤 登录AppGallery Connect网站&#xff0c;选择“我的项目…

UML图中部署图例题

答案&#xff1a;B 知识点&#xff1a; 组件图 一组构件之间的组织和依赖&#xff0c;专注于系统的静态实现视图 部署图 运行处理结点以及构件的配置&#xff0c;给出体系结构的静态视图 类图 一组对象&#xff0c;接口&#xff0c;协作和它们之间的关系 UML图中涉及到…

ALTIUM DESIGNER PCB设计中关闭和打开捕捉热点(hot spot)功能

ALTIUM DESIGNER PCB设计中关闭和打开捕捉热点&#xff08;snap to hot spot&#xff09;功能 在采用ALTIUM DESIGNER 18 进行PCB元器件布局时&#xff0c;我喜欢将元器件放置在栅格&#xff08;grid&#xff09;上&#xff0c;这样元器件的位置比较规整。但在设置完栅格后&am…

Java流程控制语句——跳转语句详解:break 与 continue 有什么区别?

&#x1f310;在Java编程中&#xff0c;break和continue是两个重要的控制流语句&#xff0c;它们允许开发者根据特定条件改变程序的执行流程。虽然两者都用于中断当前的行为&#xff0c;但它们的作用方式不同。本文将通过生动的例子来详细解释这两个语句&#xff0c;并使用流程…

VMware启动时报错: “另一个程序已锁定文件的一部分,进程无法访问” 分析记录

项目场景&#xff1a; VMware启动时报错: “另一个程序已锁定文件的一部分,进程无法访问” 问题描述 VMware启动时报错: “另一个程序已锁定文件的一部分,进程无法访问” 原因分析&#xff1a; 虚拟机开启后会对部分文件继续加密&#xff0c;关闭时虚拟机会自动对其解密&…

计算机毕业设计之:基于uni-app的校园活动信息共享系统设计与实现(三端开发,安卓前端+网站前端+网站后端)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

Transcipher:从对称加密到同态加密

摘要 本文介绍了Transcipher的概念。在Transcipher的框架下&#xff0c;用户使用高效的对称加密&#xff0c;对自己的数据进行加密&#xff0c;然后将密文和私钥的同态加密密文传输给服务器。服务器进行同态解密&#xff0c;得到用户数据同态加密的密文。Transcipher通过将计算…