JDBC实现增删改查的基本步骤
目录
一:连接数据库操作
二:获取PreparedStatement的实例 (或:预编译sql语句)
三:填充占位符
四:执行sql语句
五:关闭资源
整体查询代码:
一:连接数据库操作
首先我们还需要导入一个Mysql的包,才能使用到我们所需的许多方法,这里我们也将连接数据库的代码封装成方法的办法实现,提高通用性。实现代码如下:
public static Connection getConnection() throws Exception {FileReader fr=new FileReader("D:\\java练习文件\\fs\\jch.txt");//InputStream resourceAsStream = ClassLoader.getSystemClassLoader().getResourceAsStream("D:\\java练习文件\\fs\\jch.txt");Properties pro=new Properties();pro.load(fr);fr.close();String user = pro.getProperty("user");String password = pro.getProperty("password");String url = pro.getProperty("url");String driverClass = pro.getProperty("driverClass");Class.forName(driverClass);Connection connection = DriverManager.getConnection(url, user, password);return connection;}
二:获取PreparedStatement的实例 (或:预编译sql语句)
数据库连接被用于向数据库服务器发送命令和 SQL 语句,并接受数据库服务器返回的结果。其实一个数据库连接就是一个Socket连接。
我建议大家都使用PrepatedStatement,如果使用Statement存在许多的弊端如:
问题一:存在拼串操作,繁琐
问题二:存在SQL注入问题
SQL 注入是利用某些系统没有对用户输入的数据进行充分的检查,而在用户输入数据中注入非法的 SQL 语句段或命令(如:SELECT user, password FROM user_table WHERE user='a' OR 1 = ' AND password = ' OR '1' = '1') ,从而利用系统的 SQL 引擎完成恶意行为的做法。 对于 Java 而言,要防范 SQL 注入,只要用 PreparedStatement(从Statement扩展而来) 取代 Statement 就可以了。
三:填充占位符
for(int i = 0;i < args.length;i++){ps.setObject(i + 1, args[i]);}
四:执行sql语句
ps.execute();
sql语句需要你调用这个方法时,自己填写。如:
String sql="update qqq set age=? where id=?";update(sql,18,0);
五:关闭资源
public static void close(Connection connection, Statement ps){try {if (ps!=null){ps.close();}}catch (Exception e){e.printStackTrace();}try {if (connection!=null){connection.close();}}catch (SQLException e){e.printStackTrace();}}
整体查询代码:
查询代码和增删改不同,需要单独编写通用方法
// 通用的针对于不同表的查询:返回一个对象 (version 1.0)public <T> T getInstance(Class<T> clazz, String sql, Object... args) {Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;try {// 1.获取数据库连接conn = JDBCUtils.getConnection();// 2.预编译sql语句,得到PreparedStatement对象ps = conn.prepareStatement(sql);// 3.填充占位符for (int i = 0; i < args.length; i++) {ps.setObject(i + 1, args[i]);}// 4.执行executeQuery(),得到结果集:ResultSetrs = ps.executeQuery();// 5.得到结果集的元数据:ResultSetMetaDataResultSetMetaData rsmd = rs.getMetaData();// 6.1通过ResultSetMetaData得到columnCount,columnLabel;通过ResultSet得到列值int columnCount = rsmd.getColumnCount();if (rs.next()) {T t = clazz.newInstance();for (int i = 0; i < columnCount; i++) {// 遍历每一个列// 获取列值Object columnVal = rs.getObject(i + 1);// 获取列的别名:列的别名,使用类的属性名充当String columnLabel = rsmd.getColumnLabel(i + 1);// 6.2使用反射,给对象的相应属性赋值Field field = clazz.getDeclaredField(columnLabel);field.setAccessible(true);field.set(t, columnVal);}return t;}} catch (Exception e) {e.printStackTrace();} finally {// 7.关闭资源JDBCUtils.closeResource(conn, ps, rs);}return null;}
JDBC实现增删改查的基本步骤相关推荐
- java jdbc标签jsp_jsp+servlet+javabean+jdbc实现增删改查和分页功能 案例源码
[实例简介] 客户管理案例 1.目的:总结JDBC,和Servlet JSP结合到一起. 2.开发中的一些小技巧. 3.客户管理平台功能 * 添加客户 * 查询所有的客户的信息 * 修改客户信息 * ...
- java jdbc 增删改封装_JAVA JDBC 常规增删改查简单封装
JAVA JDBC 常规增删改查简单封装,可满足大多基本要求 作用: 1, 查询列表是直接返回List对象,不必再遍历: 2, 单条查询直接返回对象: 3, 执行sql仅需一个方法搞定: packag ...
- C# 连接ACCESS数据库 - 增删改查(详细步骤)
基于上一篇博客C# 连接MySQL实现增删改查(详细步骤),现在记录下另一篇博客,如何连接ACCESS数据库实现增删改查. 总体上也不算很难,因为微软的Visual Studio 本就支持连接该数据库 ...
- Servlet+jdbc+jsp增删改查
Servlet+jdbc+jsp增删改查 目录 Servlet 1. 新建一个工程名为servletStudy 2. tomcat xml配置 3. servlet类 User类 Function类 ...
- jdbc增删改查有哪些步骤_用Mybatis如何实现对数据库的增删改查步骤
使用Mybatiss实现对数据库的增删改查 文件目录 1.导入jar包,这里使用maven <dependencies><!--mybatis依赖--><!-- org. ...
- jdbc增删改查有哪些步骤_JDBC打造通用增删改方法
[JDBC]打造通用增删改方法原创 简介:在我们学习JDBC的时候或者编写简单的Servlet程序的时候,经常需要增删改查等操作,很多小伙伴的做法是:增删改查各写一个方法,这样写虽然可以实现我们想要的 ...
- 数据库连接,实现增删改查操作具体步骤(全)
1.连接数据库必要的步骤: jdbc: driver=com.mysql.jdbc.Driver jdbcUrl=jdbc:mysql://localhost:3306/lxn user=root p ...
- Java Web(十) JDBC的增删改查,C3P0等连接池,dbutils框架的使用
前面做了一个非常垃圾的小demo,真的无法直面它,菜的抠脚啊,真的菜,好好努力把.菜鸡. --WZY 一.JDBC是什么? Java Data Base Connectivity,java数据库连接, ...
- 详细解析java JDBC实现增删改查
目录 实现java数据库的增删改查基本步骤 包与类的结构. 一,与数据库建立连接,驱动包导入. 二,创建实体类(与数据库的属性相一致) 三,创建接口 四,sql语句预编译和执行代码 五,test测试 ...
最新文章
- PAT(甲级)2020年秋季考试 7-4 Professional Ability Test
- Java培训完可以应用在什么领域
- 第十六届的无线信标-2021-线圈参数测试和仿真
- [Windows编程] C++中 bool,BOOL ,VARIANT_BOOL 的区别
- 其他OJ 树型DP 选课
- 数据结构——HDU1312:Red and Black(DFS)
- [转]论SOA架构的几种主要开发方式
- [GXOI/GZOI2019]旧词——树链剖分+线段树
- 【2006-1】【字符统计】
- 请问运行py文件的时候怎么样可以不让那个黑框一闪...
- 大数据(1)---大数据全系技术概览
- java将一个整数反转输出,输入一个整数,实现反转输出,如输入123,输出321。...
- ​Linux进程管理工具
- 自学单片机入门学习建议
- 小甲鱼 OllyDbg 教程系列 (十四) : 模态对话框 和 非模态对话框 之 URlegal 和 movgear...
- adb 截屏和录屏命令
- H2O的机器学习框架的数据分析应用
- python财务编程_Python笔记 财务小白的 day4 python编程基础(2)
- ArcGIS的栅格数据空间分析——栅格插值(1)
- R语言使用lm函数构建多元回归模型(Multiple Linear Regression)、并根据模型系数写出回归方程、使用resid函数或者residuals计算出模型的残差值