1,Statement对象是Java 执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句。Statement对象,用于执行不带参数的简单SQL语句。
Statement 对象用于将 SQL 语句发送到数据库中。实际上有三种 Statement 对象,它们都作为在给定连接上执行SQL语句的包容器: Statement 对象用于执行不带参数的简单SQL语句;
PreparedStatement(它从 Statement 继承而来)用于执行带或不带 IN 参数的预编译 SQL 语句;
CallableStatement(它从 PreparedStatement 继承而来)CallableStatement 对象用于执行对数据库已存在的存储过程的调用。它们都专用于发送特定类型的 SQL 语句。
上文中

Statement stmt = con.createStatement();//Statement对象实例
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");//执行SQL语句,并把结果集放在ResultSet对象中
while (rs.next()) {                   //对结果集进行遍历int x = rs.getInt("a");       //获得字段a的值String s = rs.getString("b");float f = rs.getFloat("c");
}

第一步:创建Statement对象实例stmt后,调用该对象的executeQuery(sql)方法执行参数sql语句;当然,Statement对象还有很多方法,如executeUpdate(String sql);
第二步:根据sql语句执行查询语句后,得出的是一个结果集或者说还是一张表,放在ResultSet 的对象rs中
第三步:循环遍历结果集rs,rs.next()方法每次指向结果集的一项记录或者说是一栏,循环体中调用get方法如rs.getString(“b”);参数是表的字段名。就可得到该字段中的值

2,该 PreparedStatement接口继承Statement,并与之在两方面有所不同:
PreparedStatement 实例包含已编译的 SQL 语句。这就是使语句“准备好”。包含于 PreparedStatement 对象中的 SQL 语句可具有一个或多个 IN 参数。IN参数的值在 SQL 语句创建时未被指定。相反的,该语句为每个 IN 参数保留一个问号(“?”)作为占位符。每个问号的值必须在该语句执行之前,通过适当的setXXX 方法来提供。
由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象。因此,多次执行的 SQL 语句经常创建为 PreparedStatement 对象,以提高效率。

通过使用java.sql.preparedstatement,这个问题可以自动解决。一个preparedstatement是从java.sql.connection对象和所提供的sql字符串得到的,sql字符串中包含问号(?),这些问号标明变量的位置,然后提供变量的值,最后执行语句,例如:

string sql = "select * from people where id = ? and name = ?";//先定义要执行的sql语句
ps.setint(1,id);// 设置问号里的变量值
ps.setstring(2,name);
PreparedStatement ps = connection.prepareStatement(sql);
Resultset rs = ps.executequery();
while(rs.next()){String u=rs.getString("id");String p=rs.getString("name");              }

使用preparedstatement的另一个优点是字符串不是动态创建的.

PreparedStatement对象较Statement对象有很好代码的可读性和可维护性:比如

stmt.executeUpdate("insertintotb_name(col1,col2,col2,col4)values('"+var1+"','"+var2+"',"+var3+",'"+var4+"')"); 
perstmt=con.prepareStatement("insertintotb_name(col1,col2,col2,col4)values(?,?,?,?)");perstmt.setString(1,var1);perstmt.setString(2,var2);perstmt.setString(3,var3);perstmt.setString(4,var4);perstmt.executeUpdate();

不用我多说,对于第一种方法.别说其他人去读你的代码,就是你自己过一段时间再去读,都会觉得伤心.
下面将给出一个完整的访问数据库的例子。

Java数据库连接(JDBC)之二:Statement对象和PreparedStatement对象的使用相关推荐

  1. Java数据库连接--JDBC基础知识(操作数据库:增删改查)

    一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...

  2. JDBC(一)——statement对象、PreparedStatement对象

    文章目录 1. 数据库驱动 2. JDBC 3. 第一个JDBC程序 4. statement对象 4.1 简述 4.2 CRUD操作 4.3 代码实现 5. PreparedStatement对象 ...

  3. Java数据库连接——JDBC新手安装、测试教程

    文章目录 前言 一.JDBC是什么? 二.数据库配置 1.软件安装 2.Navicat创建设置 三.编写Java代码 1.前期文件配置 2.编写代码 四.测试 总结 前言 本文适用于JDBC了解与初学 ...

  4. 2020-08-02 Mysql数据库索引初识、备份、设计原则、JDBC连接、SQL注入、PreparedStatement对象使用、事务处理、连接池

    ------------------------索引---------------------- 定义:帮助MYSQL高效获取数据的数据结构 ----------主键索引----------prima ...

  5. 4.Java数据库连接_1.JDBC (Java DB Connection)简介

    //============================================================================ Mysql安装参考: http://blo ...

  6. JDBC (Java DB Connection)---Java数据库连接

    一:JDBC (Java DB Connection)-Java数据库连接 JDBC是一种可用于执行SQL语句的JAVA API(ApplicationProgramming Interface应用程 ...

  7. Java数据库JDBC——prepareStatement的用法和解释

    转自:http://blog.csdn.net/QH_JAVA/article/details/48245945 一.prepareStatement 的用法和解释 1.PreparedStateme ...

  8. JAVA数据库连接(JDBS)

    1.JDBS简介 JDBC(Java DataBase Connectivity), 即java数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Ja ...

  9. Effective Java读书笔记(二)

    Effective Java 读书笔记 (二) 创建和销毁对象 遇到多个构造器参数时要考虑使用构建器 创建和销毁对象 何时以及如何创建对象? 何时以及如何避免创建对象? 如何确保它们能够适时地销毁? ...

最新文章

  1. PyCharm 查找文件名
  2. python常用命令汇总-Python爬虫框架Scrapy常用命令总结
  3. Spring Aop总结
  4. 使用Spring Roo进行概念验证
  5. linux 多个秘钥,linux管理多个ssh公钥密钥
  6. [编程之美]饮料供货
  7. mysqldump导出insert带字段
  8. Flutter基础(四)开发Flutter应用前需要掌握的Basic Widget
  9. 拓端tecdat|探析大数据期刊文章研究热点
  10. 小D课堂 - 零基础入门SpringBoot2.X到实战_第14节 高级篇幅之SpringBoot多环境配置_59、SpringBoot多环境配置介绍和项目实战...
  11. MessageBox的用法
  12. 使用Python把BT种子转化为磁力链接
  13. 移动体验大作战,冰桶算法全盘点
  14. QA | R做生存分析如何取最佳cutoff(截断)
  15. 小学生期末评语经典大全
  16. PS 模块BAPI新建修改项目、WBS、网络、作业 (一)
  17. window.parent.open弹出多个界面,界面间互相传值
  18. 2022-2027年中国人力资源外包服务行业市场全景评估及发展战略规划报告
  19. 关于数独游戏的实现(一)
  20. Java中的Listener监听器与Ajax技术和Axios异步框架以及JSON传递接收数据

热门文章

  1. 爬虫篇——代理IP爬取备用及存储
  2. Python列表,元组,字典的区别
  3. 《图解密码技术》分组密码(5) 输出反馈OFB模式
  4. 近世代数--环同态--环同态基本定理
  5. BUUCTF--[GWCTF 2019]re3学习记录
  6. 设计模式(二)————观察者模式
  7. 2022-02-13
  8. 获取系统进程信息和进程依赖的dll信息--CreateToolhelp32Snapshot
  9. 非MFC工程中使用MFC库
  10. Windows系统调用学习笔记(一)—— API函数调用过程