Statement 和 PreparedStatement 的区别:

  1)语句不同

    PreparedStatement需要预编译以及需要参数

  2)由于PreparedStatement有缓存区,所以效率更高

  3)由于PreparedStatement有缓存区,所以更安全,防止了注入(1=1)

  PreparedStatement接口(推荐使用):

  代码1:

  1. /**
  2. * 添加数据语句
  3. **/
  4.  
  5. private static void Intinsert() {
  6.  
  7. Connection conn = null;
  8. PreparedStatement stsm = null;
  9. try {
  10. // 1:调用工具类获取连接
  11. conn = Jdbcutil.getConnection();
  12.  
  13. // 2:准备sql预编译语句
  14. // ?占用一个参数位
  15. String sql = "INSERT INTO person (NAME,sex,age) VALUES (?,?,?);";
  16.  
  17. // 3:执行sql预编译语句(检查语法)
  18. stsm = conn.prepareStatement(sql);
  19.  
  20. // 4:设置传递的参数
  21.  
  22. stsm.setString(1, "张三");
  23. stsm.setString(2, "男");
  24. stsm.setInt(3, 20);
  25.  
  26. // 5:发送参数,执行sql
  27. // 注意:这里的方法后面没有参数
  28. int result = stsm.executeUpdate();
  29. System.out.println("影响了" + result + "行");
  30. } catch (Exception e) {
  31. e.printStackTrace();
  32. } finally {
  33. // 6:关闭连接
  34. Jdbcutil.close(conn, stsm);
  35. }
  36. }

  代码2:

  1. /**
  2. * 修改语句
  3. */
  4.  
  5. private static void testUpdate() {
  6.  
  7. Connection conn = null;
  8. PreparedStatement stsm = null;
  9.  
  10. try {
  11. // 1:创建连接
  12. conn = Jdbcutil.getConnection();
  13.  
  14. // 2:创建sql预编译语言
  15. String sql = "UPDATE person SET NAME = ?WHERE id = ?;";
  16.  
  17. // 3:执行sql预编译语言
  18. stsm = conn.prepareStatement(sql);
  19.  
  20. // 4: 设置参数
  21. stsm.setString(1, "李四");
  22. stsm.setInt(2, 3);
  23.  
  24. // 5:发送参数,执行sql
  25. int result = stsm.executeUpdate();
  26. System.out.println("影响了" + result + "行");
  27. } catch (Exception e) {
  28. e.printStackTrace();
  29. } finally {
  30. Jdbcutil.close(conn, stsm);
  31. }
  32.  
  33. }

  代码3: 

  1. /**
  2. * 查询语句
  3. */
  4.  
  5. private static void testSelect() {
  6.  
  7. ResultSet rs = null;
  8. Connection conn = null;
  9. PreparedStatement stsm = null;
  10. try {
  11. // 1:创建连接
  12. conn = Jdbcutil.getConnection();
  13.  
  14. // 2:创建sql预编译语言
  15. String sql = "SELECT * FROM person;";
  16.  
  17. // 3:执行预编译语言
  18. stsm = conn.prepareStatement(sql);
  19.  
  20. // 这里不需要设置参数
  21. // 4:执行sql语言
  22. rs = stsm.executeQuery();
  23.  
  24. // 5:查看所有数据
  25. while (rs.next()) {
  26. int id = rs.getInt("id");
  27. String name = rs.getString("name");
  28. String sex = rs.getString("sex");
  29. System.out.println(id + "," + name + "," + sex);
  30. }
  31. } catch (Exception e) {
  32. e.printStackTrace();
  33. throw new RuntimeException(e);
  34. } finally {
  35. Jdbcutil.close(conn, stsm, rs);
  36. }
  37.  
  38. }

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. 用Kotlin改写PHP程序是什么样的体验

    学Kotlin其实要看:http://kotlinlang.org/docs/kotlin-docs.pdf 在线版是不完整的!!!少了一些章节,会有点难看懂后面的文档. 我选择了WordPress里 ...

  2. 【工匠大道】将项目同时托管到Github和Git@OSC

    原文地址 摘要: Github是最大的git代码托管平台,​GIT@OSC是国内最大的git代码托管平台,支持免费私有库,支持SVN操作,用户众多.很多用户需要同时将代码托管到两个平台,这篇文章的主要 ...

  3. CSS3与页面布局学习笔记(四)——页面布局大全(负边距、双飞翼、多栏、弹性、流式、瀑布流、响应式布局)

    一.负边距与浮动布局 1.1.负边距 所谓的负边距就是margin取负值的情况,如margin:-100px,margin:-100%.当一个元素与另一个元素margin取负值时将拉近距离.常见的功能 ...

  4. 【代码笔记】iOS-图文混排(HBLabelDemo)

    一,效果图. 二,工程图. 三,代码. ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIVie ...

  5. Eclipse 常用快捷键 For MAC

    Eclipse 常用快捷键 For MAC Option + Command + X: 运行Command + O:显示大纲Command + 1:快速修复Command + D:删除当前行Comma ...

  6. 开篇:软件项目的整个流程 - IT软件人员学习系列文章

    这段时间闲来无事,就在总结以前的项目经验,然后写成博客的形式以进行记录.本文就对<IT软件人员学习系列文章>做个开篇吧. 对于IT软件的开发来说,无外乎B/S.C/S和Android.iO ...

  7. SQL SERVER使用ODBC 驱动建立的链接服务器调用存储过程时参数不能为NULL值

    我们知道SQL SERVER建立链接服务器(Linked Server)可以选择的驱动程序非常多,最近发现使用ODBC 的 Microsoft OLE DB 驱动程序建立的链接服务器(Linked S ...

  8. JS/JQuery针对不同类型元素的操作(radio、select、checkbox)

    一.select下拉框 I:javascript方法 1:获取选中的值 F1:   var  myselect=document.getElementById("test");或者 ...

  9. 【转载】PHP性能优化干货

    PHP优化对于PHP的优化主要是对php.ini中的相关主要参数进行合理调整和设置,以下我们就来看看php.ini中的一些对性能影响较大的参数应该如何设置. # vi /etc/php.ini (1) ...

  10. Linux下查找文件:which、whereis、locate、find 命令的区别

    我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索.which       查看可执行文件的位置,通过环境变量查whereis    查看文件的位置,通过数据库查,每 ...