Java数据库连接(JDBC)之二:Statement对象和PreparedStatement对象的使用
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对象的使用相关推荐
- Java数据库连接--JDBC基础知识(操作数据库:增删改查)
一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...
- JDBC(一)——statement对象、PreparedStatement对象
文章目录 1. 数据库驱动 2. JDBC 3. 第一个JDBC程序 4. statement对象 4.1 简述 4.2 CRUD操作 4.3 代码实现 5. PreparedStatement对象 ...
- Java数据库连接——JDBC新手安装、测试教程
文章目录 前言 一.JDBC是什么? 二.数据库配置 1.软件安装 2.Navicat创建设置 三.编写Java代码 1.前期文件配置 2.编写代码 四.测试 总结 前言 本文适用于JDBC了解与初学 ...
- 2020-08-02 Mysql数据库索引初识、备份、设计原则、JDBC连接、SQL注入、PreparedStatement对象使用、事务处理、连接池
------------------------索引---------------------- 定义:帮助MYSQL高效获取数据的数据结构 ----------主键索引----------prima ...
- 4.Java数据库连接_1.JDBC (Java DB Connection)简介
//============================================================================ Mysql安装参考: http://blo ...
- JDBC (Java DB Connection)---Java数据库连接
一:JDBC (Java DB Connection)-Java数据库连接 JDBC是一种可用于执行SQL语句的JAVA API(ApplicationProgramming Interface应用程 ...
- Java数据库JDBC——prepareStatement的用法和解释
转自:http://blog.csdn.net/QH_JAVA/article/details/48245945 一.prepareStatement 的用法和解释 1.PreparedStateme ...
- JAVA数据库连接(JDBS)
1.JDBS简介 JDBC(Java DataBase Connectivity), 即java数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Ja ...
- Effective Java读书笔记(二)
Effective Java 读书笔记 (二) 创建和销毁对象 遇到多个构造器参数时要考虑使用构建器 创建和销毁对象 何时以及如何创建对象? 何时以及如何避免创建对象? 如何确保它们能够适时地销毁? ...
最新文章
- PyCharm 查找文件名
- python常用命令汇总-Python爬虫框架Scrapy常用命令总结
- Spring Aop总结
- 使用Spring Roo进行概念验证
- linux 多个秘钥,linux管理多个ssh公钥密钥
- [编程之美]饮料供货
- mysqldump导出insert带字段
- Flutter基础(四)开发Flutter应用前需要掌握的Basic Widget
- 拓端tecdat|探析大数据期刊文章研究热点
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第14节 高级篇幅之SpringBoot多环境配置_59、SpringBoot多环境配置介绍和项目实战...
- MessageBox的用法
- 使用Python把BT种子转化为磁力链接
- 移动体验大作战,冰桶算法全盘点
- QA | R做生存分析如何取最佳cutoff(截断)
- 小学生期末评语经典大全
- PS 模块BAPI新建修改项目、WBS、网络、作业 (一)
- window.parent.open弹出多个界面,界面间互相传值
- 2022-2027年中国人力资源外包服务行业市场全景评估及发展战略规划报告
- 关于数独游戏的实现(一)
- Java中的Listener监听器与Ajax技术和Axios异步框架以及JSON传递接收数据