从实际来讲,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. C# 初步学习

    这学期有了C#开发这门课....先做了计算器,还有进制转换,别人看来似乎很强,其实在ACM中算是两个简单的水题了.....参加竞赛一年下来,发现学到的算法和数据结构都是十分有用的东西. 计算器最核心的 ...

  2. CentOS Hadoop安装配置详细

    总体思路,准备主从服务器,配置主服务器可以无密码SSH登录从服务器,解压安装JDK,解压安装Hadoop,配置hdfs.mapreduce等主从关系. 1.环境,3台CentOS7,64位,Hadoo ...

  3. hdu_5724_Chess(组合博弈)

    题目链接:hdu_5724_Chess 题意: 给你一个n行20列的棋盘,棋盘里面有些棋子,每个棋子每次只能往右走一步,如果右边有棋子,可以跳过去,前提是最右边有格子,如果当前选手走到没有棋子可以走了 ...

  4. java数据类型,hibernate数据类型,标准sql数据类型之间的对应表

    Hibernate API简介 其接口分为以下几类: l         提供访问数据库的操作的接口: l         用于配置Hibernate的接口: l         回调接口 l     ...

  5. jenkins 进阶系列网址

    http://www.cnblogs.com/zz0412/tag/jenkins/default.html?page=1

  6. POJ 2155 Matrix(二维树状数组)

    与以往不同的是,这个树状数组是二维的,仅此而已 #include <iostream> #include <cstdio> #include <cstring> # ...

  7. EL探索

  8. PowerDesigner设置线风格(直线,折线。。。)

    PowerDesigner中的绘图功能真是不敢恭维. 1.修改显示设置 Tools-->Display Preferences 这里有很多表现设置,我们需要的在Format菜单下. 点Modif ...

  9. Codeforces Round #367 (Div. 2)D. Vasiliy's Multiset (字典树)

    D. Vasiliy's Multiset time limit per test 4 seconds memory limit per test 256 megabytes input standa ...

  10. git第一篇---基本命令

    摘要: (1)用git而不是svn.分布式而不是集中式 (2)名词解释 origin是父目录的意思,master是 一个特殊的分支而已.具体参看做最下边: 1.创建仓库 mkdir git cd gi ...