PreparedStatement接口是Statement的子接口,属于预处理操作,与直接使用Statement不同的是,PreparedStatement在操作时,是先在数据表中准备好了一条SQL语句,但是此SQL语句的具体内容暂时不设置,而是之后再进行设置。

使用PreparedStatement完成数据的增加和查询操作

//=================================================
// File Name : PreparedStatement_demo
//------------------------------------------------------------------------------
// Author : Common import java.sql.*;
import java.text.SimpleDateFormat; //主类
//Function : PreparedStatement_demo
public class PreparedStatement_demo { //定义MySQL的数据库驱动程序
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver";
//定义MySQL数据库的连接地址
public static final String DBURL = "jdbc:mysql://localhost:3306/mysql_demo";
//MySQL数据库的连接用户名
public static final String DBUSER = "root";
//MySQL数据库的连接密码
public static final String DBPASS = "123456"; public static void main(String[] args) throws Exception{
// TODO 自动生成的方法存根
Connection conn = null; //数据库连接
PreparedStatement pstmt = null; //数据库操作 String name = "王五";
String password = "pwd2";
int age = 25;
String sex = "女";
String birthday = "2002-11-21";
java.util.Date temp = null; //声明一个Date对象
//通过SimpleDateFormat类将一个字符串变成java.util.Date类型
temp = new SimpleDateFormat("yyyy-MM-dd").parse(birthday);
//通过java.util.Date取出具体的日期数,并将其变成java.sql.Date类型
java.sql.Date bir = new java.sql.Date(temp.getTime());
String sql = "INSERT INTO user(name,password,age,sex,birthday)"+"VALUES(?,?,?,?,?)";//编写预处理SQL
Class.forName(DBDRIVER); //加载驱动程序
//连接MySQL数据库时,要写上连接的用户名和密码
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
pstmt = conn.prepareStatement(sql); //实例化PreparedStatement
pstmt.setString(1, name); //设置第一个“?”的内容
pstmt.setString(2, password); //设置第二个“?”的内容
pstmt.setInt(3, age); //设置第三个“?”的内容
pstmt.setString(4, sex); //设置第四个“?”的内容
pstmt.setDate(5, bir); //设置第五个“?”的内容
pstmt.executeUpdate(); //执行数据库更新操作,不需要SQL pstmt.close(); //操作关闭
conn.close(); //数据库关闭 } }

模糊查询

//=================================================
// File Name : PreparedStatement_demo
//------------------------------------------------------------------------------
// Author : Common import java.sql.*;
import java.text.SimpleDateFormat; //主类
//Function : PreparedStatement_demo
public class PreparedStatement_demo { //定义MySQL的数据库驱动程序
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver";
//定义MySQL数据库的连接地址
public static final String DBURL = "jdbc:mysql://localhost:3306/mysql_demo";
//MySQL数据库的连接用户名
public static final String DBUSER = "root";
//MySQL数据库的连接密码
public static final String DBPASS = "123456"; public static void main(String[] args) throws Exception{
// TODO 自动生成的方法存根 Connection conn = null; //数据库连接
PreparedStatement pstmt = null; //数据库操作
String keyWord = "王"; //设置查询关键字
String keyWord1 = "男"; //设置查询关键字
ResultSet rs = null; //保存查询结果
String sql = "SELECT id,name,password,age,sex,birthday"+
" FROM user WHERE name LIKE ? OR password LIKE ? OR sex LIKE ?";
Class.forName(DBDRIVER); //加载驱动程序
//连接MySQL数据库时,要写上连接的用户名和密码
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
pstmt = conn.prepareStatement(sql); //实例化PreparedStatement
pstmt.setString(1, "%"+keyWord+"%"); //设置第一个“?”的内容
pstmt.setString(2, "%"+keyWord+"%"); //设置第一个“?”的内容
pstmt.setString(3, "%"+keyWord1+"%"); //设置第一个“?”的内容
rs = pstmt.executeQuery(); //实例化ResultSet对象
while(rs.next()){
int id = rs.getInt(1);
String name = rs.getString(2);
String pass = rs.getString(3);
int age = rs.getInt(4);
String sex = rs.getString(5);
java.util.Date d = rs.getDate(6);
System.out.println("编号:"+id);
System.out.println("名字:"+name);
System.out.println("密码:"+pass);
System.out.println("年龄:"+age);
System.out.println("性别:"+sex);
System.out.println("生日:"+d);
}
rs.close(); //关闭结果集
pstmt.close(); //操作关闭
conn.close(); //数据库关闭 } }

Java数据库——PreparedStatement接口的更多相关文章

  1. Java数据库——CallableStatement接口

    建立一个过程,建立的时候要加DELIMITER // IN——只能输入,不能输出,修改之后保留修改的数据 INOUT——可以的输入,也可以输出,修改时输出的是修改后的数据,但是再次输出的时候是最先的数 ...

  2. Java数据库——ResultSet接口

    使用SQL中的SELECT语句可以查询出数据库的全部结果,在JDBC的操作中数据库的所有查询记录将使用ResultSet进行接收,并使用ResultSet显示内容. 从user表中查询数据 //=== ...

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

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

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

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

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

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

  6. JDBC与JAVA数据库编程

    一.JDBC的概念 1. JDBC (Java DataBase Connectivity) Java数据库连接 a) 主要提供java数据库应用程序的API支持 2. JDBC的主要功能 a) 创建 ...

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

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

  8. Java—数据库技术

    JDBC(Java Database Connection,Java数据库连接)是一种用于执行SQL语句的JavaAPI(应用程序设计接口),它由一些Java语言写的类和界面组成.JDBC提供了一种标 ...

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

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

随机推荐

  1. hibernate用setResultTransformer转换

    当你用hibernate查出数据,但是类型不是原来的类型怎么办,新增的实体类还可以用,query.setResultTransformer(Transformers.aliasToBean(AA.cl ...

  2. springMVC自定义注解实现用户行为验证

    最近在进行项目开发的时候需要对接口做Session验证 1.自定义一个注解@AuthCheckAnnotation @Documented @Target(ElementType.METHOD) @I ...

  3. C#-ado.net-属性扩展

    属性扩展 是封装好的类中添加更多属性,此方法可以添加更多的数据运算方法,更灵活便捷 上一篇中介绍的是实体类和数据访问类,实体类封装的内容如下: 执行查询语句后,结果如下: 我们可以看到,性别显示的是t ...

  4. 如何在linux Shell脚本里面把一个数组传递到awk内部进行处理

    前段时间和几位同事讨论过一个问题:Shell脚本里面怎样把一个数组传递到awk内部进行处理? 当时没有找到方法.前两天在QQ群里讨论awk的时候,无意间又聊起这个话题.机缘巧合之下找到一个思路,特此分 ...

  5. ActiveMQ发消息和收消息

    来自:http://blog.163.com/chengwei_1104/blog/static/53645274201382315625329/ ActiveMQ 是Apache出品,最流行的,能力 ...

  6. python-generator生成杨辉三角

    根据廖雪峰老师的评论区摘录. 1: def triangles(): L = [1] while True: yield L L1 = [0] + L[:] L = [L[i]+L1[i] for i ...

  7. 【BZOJ-3696】化合物 树形DP + 母函数(什么鬼)

    3696: 化合物 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 165  Solved: 85[Submit][Status][Discuss] D ...

  8. sbin/hadoop-daemon.sh: line 165: /tmp/hadoop-hxsyl-journalnode.pid: Permission denied

    原来在logs下 该权限,还是不行,以root登陆可以了,但是其他节点是普通用户啊,还会出其他问题,仔细看是/tmp,就是linux根目录下的tmp,改他的权限吧,不知道重启会不会变化.

  9. .net config文件 配置类的集合

    1,appconfig文件 <configSections> <section name="ToolConfig" type="DMTools.Tool ...

  10. codeforces 723D: Lakes in Berland

    Description The map of Berland is a rectangle of the size n × m, which consists of cells of size 1 × ...