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的Criteria条件查询

    项目中用到了criteria的查询方式,觉得挺好用的,下班后找了一下资料,一边测试,一边在博客上面记录下来 1.初解 快速浏览了资料,大致了解了以下的内容: 1. Hibernate 定义了Crite ...

  2. Java网络编程——概述

    一.网络模型 OSI七层模型 应用层 表示层 会话层 传输层: 网络层: 链路层 物理层:比特流 TCP/IP四层模型 应用层 传输层:数据包,TCP/UDP 网络层:数据帧 物理层:比特流 二.网络 ...

  3. android部分开发摘要

    Async 异步  不会阻塞当前线程sync  同步 数据库是应用软件|结构化数据存储  JDBC  SQL ellipsis 省略 content provider   URI thread--lo ...

  4. [转]Java日期时间使用总结

    原文地址:http://lavasoft.blog.51cto.com/62575/52975/ 一.Java中的日期概述   日期在Java中是一块非常复杂的内容,对于一个日期在不同的语言国别环境中 ...

  5. Shell命令_awk命令

    # awk '条件1{动作1} 条件2{动作2}-' 文件名 条件( Pattern): 一般使用关系表达式作为条件 x > 10 判断变量 x是否大于10 x>=10 大于等于 x< ...

  6. 将现有的sql脚本导入 Oracle 数据库,中文乱码问题

    将现有的sql 脚本导入 Oracle数据库 比如 在windows 系统下,可以写一个 bat 来实现直接导入 如:bat 中的内容如下,logs.log 将会记录执行日志 sqlplus user ...

  7. 主线程MainThread与渲染线程RenderThread

    在Android 5.0之前,Android应用程序的主线程同时也是一个Open GL线程.但是从Android 5.0之后,Android应用程序的Open GL线程就独立出来了,称为Render ...

  8. 使用Oracle的审计功能记录连接数据库登录失败的用户信息

    最近公司有一个项目,用的oracle数据库,整天出现用户被锁的情况,后来百度查了一下,说是用户登录连续出错10次就会被锁住.于是想记录一下看看到底是哪个人在扫数据库的密码.百度了很久才找到方法,下面分 ...

  9. Anroid Studio入门

    转载:http://www.apkbus.com/forum.php?mod=viewthread&tid=255186&extra=page%3D1%26filter%3Dautho ...

  10. BZOJ3240 [Noi2013]矩阵游戏

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...