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接口 之 区别和例子的更多相关文章

  1. jdbc java数据库连接 8)防止sql注入

    回顾下之前jdbc的开发步骤: 1:建项目,引入数据库驱动包 2:加载驱动 Class.forName(..); 3:获取连接对象 4:创建执行sql语句的stmt对象;  写sql 5:执行sql ...

  2. 转:二十一、详细解析Java中抽象类和接口的区别

    转:二十一.详细解析Java中抽象类和接口的区别 http://blog.csdn.net/liujun13579/article/details/7737670 在Java语言中, abstract ...

  3. jdbc java数据库连接 2)jdbc接口核心的API

    JDBC接口核心的API java.sql.*   和  javax.sql.*(java2.0以后更新的扩展) |- Driver接口: 表示java驱动程序接口.所有的具体的数据库厂商要来实现此接 ...

  4. jdbc java数据库连接 3)Statement接口之执行DDL、DML、DQL

    |- Statement接口: 用于执行静态的sql语句 |- int executeUpdate(String sql)  : 执行静态的更新sql语句(DDL,DML) |- ResultSet ...

  5. JDBC数据库编程:PreparedStatement接口

    使用PreparedStatement进行数据库的更新及查询操作. PreparedStatement PreparedStatement是statement子接口.属于预处理. 使用statemen ...

  6. 关于JAVA中抽象类和接口的区别辨析

    今天主要整理一下新学习的有关于Java中抽象类和接口的相关知识和个人理解. 1 抽象类 用来描述事物的一般状态和行为,然后在其子类中去实现这些状态和行为.也就是说,抽象类中的方法,需要在子类中进行重写 ...

  7. Java中抽象类和接口的区别?

    深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的 ...

  8. java中抽象类、接口及区别

    转自:http://www.cnblogs.com/dolphin0520/p/3811437.html 一.抽象类 在了解抽象类之前,先来了解一下抽象方法.抽象方法是一种特殊的方法:它只有声明,而没 ...

  9. jdbc java数据库连接 5)CallableStatement 接口

    CallableStatement执行存储过程(也是预编译语言) 首先在sql中执行以下带有输入参数的代码: DELIMITER $ CREATE PROCEDURE pro_findById(IN ...

随机推荐

  1. PHP流程控制之特殊结构

    在前两节介绍的循环结构中,都是通过循环语句本身提供的条件表达式来指定循环次数执行代码块直到停止循环.但如果想在循环体执行过程中中止循环,或是跳过一些循环继续执行其他代码块,我们就需要一些特殊的流程控制 ...

  2. 为什么你不应该使用 MongoDB

    本文转载自: http://www.oschina.net/translate/why-you-should-never-use-mongodb (只作转载, 不代表本站和博主同意文中观点或证实文中信 ...

  3. 异常处理的解决方案 OneTrueError

    应用程序安装在用户计算机上,异常处理一直是反复出现的问题.用户报障中的描述不足以重现该问题.你不得不猜测,或者只是做猴子测试,以找出其异常出现的根源. 最严重的问题是当认为你已经找出了原因并纠正它,但 ...

  4. jquery动态改变div宽度和高度

    效果体验:http://keleyi.com/keleyi/phtml/jquery/23.htm 完整代码: <!DOCTYPE html PUBLIC "-//W3C//DTD X ...

  5. 又到周末了,我们一起来研究【浏览器如何检测是否安装app】吧

    前言 扯淡 这个月比较倒霉,我送了女朋友一台笔记本电脑作为生日礼物,结果15天一过电脑就坏了,悲剧的我还把电脑盒子给扔了!淘宝不给换更不给退 于是被女朋友臭骂了一过星期后,今天本来在公司有任务的,但是 ...

  6. jQuery静态方法noConflict的使用和源码分析

    所谓静态方法是jQuery本身得公共方法,并不需要通过实例化来调用,一般也称为工具方法,下面先来列绝下jQuery.noConflict方法的用法: noConflict() 方法让渡变量 $ 的 j ...

  7. js严格模式总结

    首先,我们要理解严格模式的概念,严格模式是一种特殊的执行模式,它修复了部分语言上的不足,提供更强的错误检查,病增强安全性.可以对部分函数进行执行严格模式,如: function func(){ 'us ...

  8. MyEclipse快捷键大全

    MyEclipse 快捷键1(CTRL)Ctrl+1 快速修复Ctrl+D: 删除当前行Ctrl+Q 定位到最后编辑的地方Ctrl+L 定位在某行Ctrl+O 快速显示 OutLineCtrl+T 快 ...

  9. App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file

    ios进行http请求,会出现这个问题: App Transport Security has blocked a cleartext HTTP (http://) resource load sin ...

  10. Object-C关于GCD多线程的使用

    ```objc1 使用Crearte函数创建的并发队列和全局并发队列的主要区别: 1)全局并发队列在整个应用程序中本身是默认存在的并且对应有高优先级.默认优先级.低优先级和后台优先级一共四个并发队列, ...