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

模板: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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 智慧校园建设解决方案建设系统简介
  • webrtc gclient sync报错问题解决
  • lnmp - 登录技术方案设计与实现
  • WPF DataGrid 动态修改某一个单元格的样式
  • Scrapy爬虫IP代理池:提升爬取效率与稳定性
  • 10年408考研真题-数据结构
  • Ubuntu下使用 python搭建服务实现从web端远程配置设备网口
  • 【服务器入门】Linux系统基础知识
  • JS | 详解浏览器存储机制cookies、sessionStorage和localStorage的区别
  • 小程序组件间通信
  • Oracle 数据库常用命令与操作指南
  • 【乐企】基础版接口代码实现
  • 【iOS】引用计数(一)
  • 0基础学习HTML(十一)列表
  • xilinx hbm ip运用
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • js中forEach回调同异步问题
  • nodejs实现webservice问题总结
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • Redis 懒删除(lazy free)简史
  • webgl (原生)基础入门指南【一】
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 前端代码风格自动化系列(二)之Commitlint
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 阿里云重庆大学大数据训练营落地分享
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​第20课 在Android Native开发中加入新的C++类
  • ‌移动管家手机智能控制汽车系统
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (7)摄像机和云台
  • (BFS)hdoj2377-Bus Pass
  • (LeetCode) T14. Longest Common Prefix
  • (不用互三)AI绘画工具应该如何选择
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (三)Kafka离线安装 - ZooKeeper开机自启
  • (转)创业家杂志:UCWEB天使第一步
  • (自适应手机端)响应式服装服饰外贸企业网站模板
  • ****Linux下Mysql的安装和配置
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .net framework 4.0中如何 输出 form 的name属性。
  • .net web项目 调用webService
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .pop ----remove 删除
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • [ Linux ] git工具的基本使用(仓库的构建,提交)
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [100天算法】-x 的平方根(day 61)
  • [20170713] 无法访问SQL Server
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...