jdbc java数据库连接 4)PreParedStatement接口 之 区别和例子
Statement 和 PreparedStatement 的区别:
1)语句不同
PreparedStatement需要预编译以及需要参数
2)由于PreparedStatement有缓存区,所以效率更高
3)由于PreparedStatement有缓存区,所以更安全,防止了注入(1=1)

PreparedStatement接口(推荐使用):
代码1:
/**
* 添加数据语句
**/ private static void Intinsert() { Connection conn = null;
PreparedStatement stsm = null;
try {
// 1:调用工具类获取连接
conn = Jdbcutil.getConnection(); // 2:准备sql预编译语句
// ?占用一个参数位
String sql = "INSERT INTO person (NAME,sex,age) VALUES (?,?,?);"; // 3:执行sql预编译语句(检查语法)
stsm = conn.prepareStatement(sql); // 4:设置传递的参数 stsm.setString(1, "张三");
stsm.setString(2, "男");
stsm.setInt(3, 20); // 5:发送参数,执行sql
// 注意:这里的方法后面没有参数
int result = stsm.executeUpdate();
System.out.println("影响了" + result + "行");
} catch (Exception e) {
e.printStackTrace();
} finally {
// 6:关闭连接
Jdbcutil.close(conn, stsm);
}
}
代码2:
/**
* 修改语句
*/ private static void testUpdate() { Connection conn = null;
PreparedStatement stsm = null; try {
// 1:创建连接
conn = Jdbcutil.getConnection(); // 2:创建sql预编译语言
String sql = "UPDATE person SET NAME = ?WHERE id = ?;"; // 3:执行sql预编译语言
stsm = conn.prepareStatement(sql); // 4: 设置参数
stsm.setString(1, "李四");
stsm.setInt(2, 3); // 5:发送参数,执行sql
int result = stsm.executeUpdate();
System.out.println("影响了" + result + "行");
} catch (Exception e) {
e.printStackTrace();
} finally {
Jdbcutil.close(conn, stsm);
} }
代码3:
/**
* 查询语句
*/ private static void testSelect() { ResultSet rs = null;
Connection conn = null;
PreparedStatement stsm = null;
try {
// 1:创建连接
conn = Jdbcutil.getConnection(); // 2:创建sql预编译语言
String sql = "SELECT * FROM person;"; // 3:执行预编译语言
stsm = conn.prepareStatement(sql); // 这里不需要设置参数
// 4:执行sql语言
rs = stsm.executeQuery(); // 5:查看所有数据
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String sex = rs.getString("sex");
System.out.println(id + "," + name + "," + sex);
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally {
Jdbcutil.close(conn, stsm, rs);
} }
jdbc java数据库连接 4)PreParedStatement接口 之 区别和例子的更多相关文章
- jdbc java数据库连接 8)防止sql注入
回顾下之前jdbc的开发步骤: 1:建项目,引入数据库驱动包 2:加载驱动 Class.forName(..); 3:获取连接对象 4:创建执行sql语句的stmt对象; 写sql 5:执行sql ...
- 转:二十一、详细解析Java中抽象类和接口的区别
转:二十一.详细解析Java中抽象类和接口的区别 http://blog.csdn.net/liujun13579/article/details/7737670 在Java语言中, abstract ...
- jdbc java数据库连接 2)jdbc接口核心的API
JDBC接口核心的API java.sql.* 和 javax.sql.*(java2.0以后更新的扩展) |- Driver接口: 表示java驱动程序接口.所有的具体的数据库厂商要来实现此接 ...
- jdbc java数据库连接 3)Statement接口之执行DDL、DML、DQL
|- Statement接口: 用于执行静态的sql语句 |- int executeUpdate(String sql) : 执行静态的更新sql语句(DDL,DML) |- ResultSet ...
- JDBC数据库编程:PreparedStatement接口
使用PreparedStatement进行数据库的更新及查询操作. PreparedStatement PreparedStatement是statement子接口.属于预处理. 使用statemen ...
- 关于JAVA中抽象类和接口的区别辨析
今天主要整理一下新学习的有关于Java中抽象类和接口的相关知识和个人理解. 1 抽象类 用来描述事物的一般状态和行为,然后在其子类中去实现这些状态和行为.也就是说,抽象类中的方法,需要在子类中进行重写 ...
- Java中抽象类和接口的区别?
深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的 ...
- java中抽象类、接口及区别
转自:http://www.cnblogs.com/dolphin0520/p/3811437.html 一.抽象类 在了解抽象类之前,先来了解一下抽象方法.抽象方法是一种特殊的方法:它只有声明,而没 ...
- jdbc java数据库连接 5)CallableStatement 接口
CallableStatement执行存储过程(也是预编译语言) 首先在sql中执行以下带有输入参数的代码: DELIMITER $ CREATE PROCEDURE pro_findById(IN ...
随机推荐
- 如何在windows下的Python开发工具IDLE里安装其他模块?
以安装Httplib2模块为例 1 下载模块 到 “https://code.google.com/p/httplib2/” 下载一款适合你的压缩包“httplib2-0.4.0.zip” 2 解压下 ...
- php实现设计模式之 访问者模式
<?php /** * 访问者模式 * 封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作. * 行为类模式 */ /** 抽象访问者:抽象类或 ...
- 【夯实PHP基础】PHP的date函数
本文地址 原文地址 提纲: 1. 引言 2. 代码示例 3. 参考资料 1. 引言 今天看到一段代码 $timeNew = date('n月j日', strtotime($oldTime)); 感觉有 ...
- java web学习总结(十五) -------------------JSP基础语法
任何语言都有自己的语法,JAVA中有,JSP虽然是在JAVA上的一种应用,但是依然有其自己扩充的语法,而且在JSP中,所有的JAVA语句都可以使用. 一.JSP模版元素 JSP页面中的HTML内容称之 ...
- jquery animate 动画效果使用解析
animate的意思是:使有生气:驱动:使栩栩如生地动作:赋予…以生命作为形容词:有生命的:活的:有生气的:生气勃勃的 先看动画效果:http://keleyi.com/keleyi/phtml/jq ...
- ae arcgis engine 关于面转线的方法和注意事项
代码很简单,如下 private void barButtonItem1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs ...
- AO安装需要Microsoft Visual Studio 2013?
从接触ArcGIS9.2到 10.4,在不断升级的 过程中,既给我们带来了很多惊喜,也带来一些麻烦,因为ArcGIS版本不兼容.出于体验,安装了ArcGIS Desktop10.4,AO也得升到10. ...
- ReactiveCocoa代码实践之-RAC网络请求重构
前言 RAC相比以往的开发模式主要有以下优点:提供了统一的消息传递机制:提供了多种奇妙且高效的信号操作方法:配合MVVM设计模式和RAC宏绑定减少多端依赖. RAC的理论知识非常深厚,包含有FRP,高 ...
- CSS3 选择器——属性选择器
上一节在<CSS3选择器——基本选择器>中主要介绍了CSS3选择器的第一部分,这节主要和大家一起来学习CSS3选择器的第二部分——属性选择器.属性选择器早在CSS2中就被引入了,其主要作用 ...
- 敏捷开发与jira之燃烧图
项目当前版本的燃烧图是下面这样的 存在的问题: 1.任务在版本起始时期之后再细化,造成了绿线一直在红线上面.解决方案:版本起始日期定为任务录入结束后的日期 2.工时录入不及时,没有实时反映当前项目组的 ...