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 ...
随机推荐
- Java逐行读写TXT文件
package help; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; imp ...
- ABP之模块分析
本篇作为我ABP介绍的第三篇文章,这次想讲下模块的,ABP文档已经有模块这方面的介绍,但是它只讲到如何使用模块,我想详细讲解下它模块的设计思路. ABP 框架提供了创建和组装模块的基础,一个模块能够依 ...
- Nginx配置文件详解
Nginx是一款面向性能设计的HTTP服务器,相较于Apache.lighttpd具有占有内存少,稳定性高等优势. ######Nginx配置文件nginx.conf中文详解##### #定义Ngin ...
- An entity object cannot be referenced by multiple instances of IEntityChangeTracker 的解决方案
使用EF对建立了关系的表新增记录时出现: An entity object cannot be referenced by multiple instances of IEntityChangeTra ...
- Google LOGO现代舞舞蹈动画
效果预览:http://hovertree.com/texiao/js/5.htm 截图: HTML文件代码: <!DOCTYPE html> <html xmlns="h ...
- 【UI插件】简单的日历插件(下)—— 学习MVC思想
前言 我们上次写了一个简单的日历插件,但是只是一个半成品,而且做完后发现一些问题,于是我们今天尝试来解决这些问题 PS:距离上次貌似很久了 上次,我们大概遇到哪些问题呢: ① 既然想做一套UI库,那么 ...
- 最大似然判别法和Bayes公式判别法
最大似然判别法 Bayes公式判别法
- Android内存泄漏
Java是垃圾回收语言的一种,其优点是开发者无需特意管理内存分配,降低了应用由于局部故障(segmentation fault)导致崩溃,同时防止未释放的内存把堆栈(heap)挤爆的可能,所以写出来的 ...
- 【代码笔记】iOS-向服务器传JSON数据的两种方式
一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...
- Android Studio 恢复小窗口停靠模式(Docked Mode)
安卓studio在使用小窗口时,如果我们点击取消了窗口的docked mode模式,窗口就会变成,你一旦触发窗口以外的区域,窗口就会龟缩回去.此时,如果你想要恢复回原来的docked mode的话,具 ...