PreparedStatement接口

从实际来讲,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 = 18 ;
        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(1,name);
        /*当使用了setDate的时候,使用的是java.sql.date而不事java.util.date,而java.util.date下有三个子类,
        Date Time     Timestmp 三个子类
        转型方法依靠long完成
        java.util.date下有一个方法将日期变为long
        */
        stmt.setDate(2, new java.sql.Date(birthday.getTime()));
        stmt.setInt(3, age);
        stmt.setString(4, 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(1);
            String name = rs.getString(2);
            Date birthday = rs.getDate(3);
            int age = rs.getInt(4);
            String note = rs.getString(5);
            System.out.println(mid + " " + name + " " + birthday + "" + age + "" + note);
        }

        int len = stmt.executeUpdate();

        System.out.println(conn) ;

        //关闭连接
        stmt.close();
        conn.close();

模糊查询:

时间: 2024-10-12 23:15:01

PreparedStatement接口的相关文章

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

直接上下代码: 1 package com.learn.jdbc.chap04.sec02; 2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 6 import com.learn.jdbc.model.Album; 7 import com.learn.jdbc.util.DbUtil; 8 /** 9 * 使用PreparedStatement接口实现增删改操作 10 * @author Admini

PreparedStatement接口及其方法的使用

PreparedStatement接口是Statement接口的子接口,使用它的好处有三个 一:简化代码,便于sql语句的书写 二:有效的禁止sql语句的注入,例如:用户名和密码,使用PreparedStatement接口的方法,可防止不正确的输入登陆成功,提高 数据库系统的安全性 三:最大可能的提高了效率 代码如下: package com.lanqiao.javatest; import java.io.IOException;import java.io.InputStream;impor

JDBC中PreparedStatement接口提供的execute、executeQuery和executeUpdate之间的区别及用法

JDBC中PreparedStatement接口提供的execute.executeQuery和executeUpdate之间的区别及用法 (2012-08-27 09:36:18) 转载▼ 标签: statement execute executequery executeupdate 杂谈 分类: DataBase区 PreparedStatement接口提供了三种执行 SQL 语句的方法:executeQuery.executeUpdate 和 execute.使用哪一个方法由 SQL 语

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

1.PreparedStatement接口引入 PreparedStatement是Statement的子接口,属于预处理操作,与直接使用Statement不同的是,PreparedStatement在操作时, 是先在数据表中准备好了一条SQL语句,但是此SQL语句的具体内容暂时不设置,而是之后再进行设置. (以后开发一般使用PreparedStatement,不用Statement) 2.使用PreparedStatement接口实现添加数据操作 public class JDBCDemo5

使用Statement接口实现增,删,改操作(工作中不常用这个,而用PreparedStatement接口)

一.Statement接口 作用:用于执行静态 SQL 语句并返回它所生成结果的对象. 1. 创建数据库连接类及相册实体,代码如下: 1 package com.learn.jdbc.util; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.PreparedStatement; 6 import java.sql.Statement; 7 8 /** 9 * 封装数据库连接类

使用PreparedStatement接口操作数据库

从代码来看,用PreparedStatement来代替Statement会使代码多出几行,但这样的代码无论从可读性还是可维护性上来说,都比直接用Statement的代码高很多档次. 传递给PreparedStatement对象的参数可以被强制进行类型转换,使开发人员可以确保在插入或查询数据时与底层的数据库格式匹配. 在公共web站点环境下,有恶意的用户会利用那些设计不完善的.不能正确处理字符串的应用程序来个SQl注入,使用PreparedStatement安全性更高. package cn.bd

JDBC系列:(3)使用PreparedStatement执行sql语句

执行sql语句的接口 接口 作用 Statement接口 用于执行静态的sql语句 PreparedStatement接口 用于执行预编译sql语句 CallableStatement接口 用于执行存储过程的sql语句(call xxx) PreparedStatement Vs Statement 序号 不同 描述 1 语法不同 PreparedStatement可以使用预编译的sql,而Statment只能使用静态的sql 2 效率不同 PreparedStatement可以使用sql缓存区

jdbc中的Statement对象和Preparedstatement对象的区别,以及通过jdbc操作调用存储过程

一. java.sql.*   和  javax.sql.*的包的类结构 |- Driver接口: 表示java驱动程序接口.所有的具体的数据库厂商要来实现此接口. |- connect(url, properties):  连接数据库的方法. url: 连接数据库的URL URL语法: jdbc协议:数据库子协议://主机:端口/数据库 user: 数据库的用户名 password: 数据库用户密码 |- DriverManager类: 驱动管理器类,用于管理所有注册的驱动程序 |-regis

Statement和PreparedStatement的区别; 什么是SQL注入,怎么防止SQL注入? (转)

问题一:Statement和PreparedStatement的区别 先来说说,什么是java中的Statement:Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.具体步骤: 1.首先导入java.sql.*:这个包. 2.然后加载驱动,创建连接,得到Connection接口的的实现对象,比如对象名叫做conn. 3.然后再用conn对象去创建Statement的实例,方法是:Statement stmt = conn