目录

一:连接数据库操作

二:获取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实现增删改查的基本步骤相关推荐

  1. java jdbc标签jsp_jsp+servlet+javabean+jdbc实现增删改查和分页功能 案例源码

    [实例简介] 客户管理案例 1.目的:总结JDBC,和Servlet JSP结合到一起. 2.开发中的一些小技巧. 3.客户管理平台功能 * 添加客户 * 查询所有的客户的信息 * 修改客户信息 * ...

  2. java jdbc 增删改封装_JAVA JDBC 常规增删改查简单封装

    JAVA JDBC 常规增删改查简单封装,可满足大多基本要求 作用: 1, 查询列表是直接返回List对象,不必再遍历: 2, 单条查询直接返回对象: 3, 执行sql仅需一个方法搞定: packag ...

  3. C# 连接ACCESS数据库 - 增删改查(详细步骤)

    基于上一篇博客C# 连接MySQL实现增删改查(详细步骤),现在记录下另一篇博客,如何连接ACCESS数据库实现增删改查. 总体上也不算很难,因为微软的Visual Studio 本就支持连接该数据库 ...

  4. Servlet+jdbc+jsp增删改查

    Servlet+jdbc+jsp增删改查 目录 Servlet 1. 新建一个工程名为servletStudy 2. tomcat xml配置 3. servlet类 User类 Function类 ...

  5. jdbc增删改查有哪些步骤_用Mybatis如何实现对数据库的增删改查步骤

    使用Mybatiss实现对数据库的增删改查 文件目录 1.导入jar包,这里使用maven <dependencies><!--mybatis依赖--><!-- org. ...

  6. jdbc增删改查有哪些步骤_JDBC打造通用增删改方法

    [JDBC]打造通用增删改方法原创 简介:在我们学习JDBC的时候或者编写简单的Servlet程序的时候,经常需要增删改查等操作,很多小伙伴的做法是:增删改查各写一个方法,这样写虽然可以实现我们想要的 ...

  7. 数据库连接,实现增删改查操作具体步骤(全)

    1.连接数据库必要的步骤: jdbc: driver=com.mysql.jdbc.Driver jdbcUrl=jdbc:mysql://localhost:3306/lxn user=root p ...

  8. Java Web(十) JDBC的增删改查,C3P0等连接池,dbutils框架的使用

    前面做了一个非常垃圾的小demo,真的无法直面它,菜的抠脚啊,真的菜,好好努力把.菜鸡. --WZY 一.JDBC是什么? Java Data Base Connectivity,java数据库连接, ...

  9. 详细解析java JDBC实现增删改查

    目录 实现java数据库的增删改查基本步骤 包与类的结构. 一,与数据库建立连接,驱动包导入. ​二,创建实体类(与数据库的属性相一致) 三,创建接口 四,sql语句预编译和执行代码 五,test测试 ...

最新文章

  1. PAT(甲级)2020年秋季考试 7-4 Professional Ability Test
  2. Java培训完可以应用在什么领域
  3. 第十六届的无线信标-2021-线圈参数测试和仿真
  4. [Windows编程] C++中 bool,BOOL ,VARIANT_BOOL 的区别
  5. 其他OJ 树型DP 选课
  6. 数据结构——HDU1312:Red and Black(DFS)
  7. [转]论SOA架构的几种主要开发方式
  8. [GXOI/GZOI2019]旧词——树链剖分+线段树
  9. 【2006-1】【字符统计】
  10. 请问运行py文件的时候怎么样可以不让那个黑框一闪...
  11. 大数据(1)---大数据全系技术概览
  12. java将一个整数反转输出,输入一个整数,实现反转输出,如输入123,输出321。...
  13. ​Linux进程管理工具
  14. 自学单片机入门学习建议
  15. 小甲鱼 OllyDbg 教程系列 (十四) : 模态对话框 和 非模态对话框 之 URlegal 和 movgear...
  16. adb 截屏和录屏命令
  17. H2O的机器学习框架的数据分析应用
  18. python财务编程_Python笔记 财务小白的 day4 python编程基础(2)
  19. ArcGIS的栅格数据空间分析——栅格插值(1)
  20. R语言使用lm函数构建多元回归模型(Multiple Linear Regression)、并根据模型系数写出回归方程、使用resid函数或者residuals计算出模型的残差值

热门文章

  1. vue导入excel进度条_在vue中导入Excel表
  2. 别了,超人——黑曼巴!
  3. DS1337 时钟芯片在 C8051F 上的实现
  4. NLP--社区检测算法(Community Detection)总结【原理】
  5. 服务器性能测试--super PI 测试
  6. 超级简单的迷宫代码 初学者程序
  7. P1506 拯救oibh总部——区域染色问题(DFSBFS双解)
  8. 支付宝:你当前操作的设备存在异常,请尝试使用经常登录的手机操作
  9. 一元购宝倒计时之angularJs-$interval
  10. 信息安全行业里面一些很不错的书