从实际来讲,Statement现在已经不使用了,他已经称为了历史。

Statement执行关键性问题在于他需要一个完整 的字符串定义要使用的SQL语句,而PreparedStatement可以动态的设置所需要的数据。

PrepareStatement属于Statement的子接口但是想要取得这个子接口的实例化对象,依然要使用COnnection提供的方法。

prepareStatement

PreparedStatement prepareStatement(String sql)
throws SQLException

里面需要传入一个SQL语句,这个SQL是一个具有特殊标记的完整的SQL。 这个接口里面有很多的Set方法。

  -更新操作  int executeUpdate()

  -查询操作   ResultSet executeQuery()

范例:

package cn;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Date; public class Test { private static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver";
private static final String DBURL = "jdbc:oracle:thin:@localhost:1521:mldn";
private static final String USER = "scott" ;
private static final String PASSWORLD = "tiger" ;
public static void main(String[] args) throws Exception{
String name = "MR'SMITH";
Date birthday = new Date() ;
int age = ;
String note = "是个歪果仁" ; //第一步 加载数据库驱动程序,此时不需要实例化,会有容器自己负责管理
Class.forName(DBDRIVER) ;
//第二步 连接数据库 每一个Connection都代表一个数据库连接
Connection conn = DriverManager.getConnection(DBURL,USER,PASSWORLD) ; String sql = "INSERT INTO member (mid,name,birthday,age,note) VALUES(myseq.nextval,?,?,?,?)"; //第三步,进行数据库的数据操作
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(,name);
/*当使用了setDate的时候,使用的是java.sql.date而不事java.util.date,而java.util.date下有三个子类,
Date Time Timestmp 三个子类
转型方法依靠long完成
java.util.date下有一个方法将日期变为long
*/
stmt.setDate(, new java.sql.Date(birthday.getTime()));
stmt.setInt(, age);
stmt.setString(, note); int len = stmt.executeUpdate(); System.out.println(conn) ; //关闭连接
stmt.close();
conn.close();
} }

查询操作:

查询全部数据:

//第一步 加载数据库驱动程序,此时不需要实例化,会有容器自己负责管理
Class.forName(DBDRIVER) ;
//第二步 连接数据库 每一个Connection都代表一个数据库连接
Connection conn = DriverManager.getConnection(DBURL,USER,PASSWORLD) ; String sql = "SELECT mid,name,birthday,age,note FROM member WHRER ORDER BY NAME";
//第三步,进行数据库的数据操作
PreparedStatement stmt = conn.prepareStatement(sql); ResultSet rs = stmt.executeQuery();
while(rs.next()){
int mid = rs.getInt();
String name = rs.getString();
Date birthday = rs.getDate();
int age = rs.getInt();
String note = rs.getString();
System.out.println(mid + " " + name + " " + birthday + "" + age + "" + note);
} int len = stmt.executeUpdate(); System.out.println(conn) ; //关闭连接
stmt.close();
conn.close();

模糊查询:

PreparedStatement接口的更多相关文章

  1. jdbc java数据库连接 4)PreParedStatement接口 之 区别和例子

    Statement 和 PreparedStatement 的区别: 1)语句不同 PreparedStatement需要预编译以及需要参数 2)由于PreparedStatement有缓存区,所以效 ...

  2. JDBC的使用(二):PreparedStatement接口;ResultSet接口(获取结果集);例题:SQL注入

    ResultSet接口:类似于一个临时表,用来暂时存放数据库查询操作所获得的结果集. getInt(), getFloat(), getDate(), getBoolean(), getString( ...

  3. Java数据库——PreparedStatement接口

    PreparedStatement接口是Statement的子接口,属于预处理操作,与直接使用Statement不同的是,PreparedStatement在操作时,是先在数据表中准备好了一条SQL语 ...

  4. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  5. PreparedStatement接口及其方法的使用

    PreparedStatement接口是Statement接口的子接口,使用它的好处有三个 一:简化代码,便于sql语句的书写 二:有效的禁止sql语句的注入,例如:用户名和密码,使用Prepared ...

  6. 占位符的使用和PreparedStatement接口使用:

    一.PreparedStatement 接口的使用   首先占位符我们可以使用 Statement 接口来操作数据, 但是这个接口存在两个问题: 1.使用 Statement  接口对象发送的 sql ...

  7. JDBC(3)-使用PreparedStatement接口实现增、删、改操作

    1.PreparedStatement接口引入 PreparedStatement是Statement的子接口,属于预处理操作,与直接使用Statement不同的是,PreparedStatement ...

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

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

  9. 使用PreparedStatement接口实现增删改操作

    直接上下代码: package com.learn.jdbc.chap04.sec02; import java.sql.Connection; import java.sql.PreparedSta ...

  10. 增删改查——PreparedStatement接口

    1.添加 package pers.Pre.add; import java.sql.Connection; import java.sql.DriverManager; import java.sq ...

随机推荐

  1. IOS小工具以及精彩的博客

    IOS小工具以及精彩的博客 工具 Log Guru是一个收集Log的小工具, 可以在 Mac 上查看 iOS 设备的实时系统日志. 现在可以直接高亮显示在 FIR.im 上安装 app 失败的原因.后 ...

  2. Android Studio相关的坑

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  3. 开源企业管理软件 ONES

    ONES 不是 ONS,基于AngularJS + ThnkPHP开发的企业管理系统平台,名字可以理解为ONES is a Niubility ERP System 或者 ONES Notonly a ...

  4. git rebase 使用

    git rebase 不会取回代码 要用git fetch先取回, git rebase 是合并代码. (1)首先用git fetch返回服务器上的代码 (2)首先用git rebase origin ...

  5. Apache的安装

    Apache的安装: 注:本例只截取需要注意的截图,其它默认则不显示. 1.       服务器信息可以按照默认配置,如果服务器的80端口没被其他服务器程序占据.可选“for All Users,on ...

  6. hdu_2255_奔小康赚大钱(KM带权二分匹配板子)

    题目连接:hdu_2255_奔小康赚大钱 存个板子 /* 其实在求最大 最小的时候只要用一个模板就行了, 把边的权值去相反数即可得到另外一个.求结果的时候再去 相反数即可,最大最小有一些地方不同.. ...

  7. maven项目如何跳过某些junit test,或者指定执行部分junit test

    maven-surefire-plugin的插件提供了对测试目录的配置,想要细看的或者学习更多东西的可以去http://maven.apache.org/surefire/maven-surefire ...

  8. Strut2 spring hibernate 整合

    一.创建web项目工程 wzz 点击finish 2.添加spring Jar包   AOP,Core,Persistence Core ,web jar 点击next 点击Finish 3.配置Da ...

  9. Unity3d疑难问题解决

    1. 加载 c++ dll 不成功,报这个错: Failed to load 'Assets/Plugins/x86_64/myFile.dll' with error 'The operation ...

  10. my97datepicker开始日期小于结束日期格式化时间精确届时分秒

    my97datepicker开始日期小于结束日期格式化时间精确到时分秒 一 , 需求: 结束时间 > 开始时间, 不符合的时间段不能选择.比如我选择开始日期是7月28,那结束的日期将只能从7月2 ...