`
chaoyi
  • 浏览: 309647 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

PreparedStatement接口

 
阅读更多

本章目标
掌握PreparedStatement接口的工作原理
可以使用PreparedStatement进行数据库的更新及查询操作

 

PreparedStatement简介
PreparedStatement是Statement的子接口,属于预处理操作,与直接使用Statement不同的是,PreparedStatement在操作时,是先在数据表之中准备好了一条SQL语句,但是此SQL语句的具体内容暂时不设置,而是之后再进行设置,以插入数据为例,使用PreparedStatement插入数据时,数据表中的指针首先指向最后一条数据之后,但是里面的内容是不知道的,而是等待用户分别设置。

 

PreparedStatement的基本操作方法

 

执行插入操作

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class PreparedStatementDemo01 {
	public static void main(String[] args) throws Exception {
		Connection conn=null; //数据库连接
		PreparedStatement pstmt = null;//数据库操作
		String name = "ichaoyi";//姓名
		int  age = 35;//年龄
		String sex ="男";//性别
		String birthday = "2014-07-02";//生日
		String sql =" insert into consumer (ID, NAME, AGE, SEX, BIRTHDAY)" +
				"values (id_seq.nextval, ?, ?, ?, to_date(?, 'yyyy-mm-dd'))";//编写预处理 SQL
		Class.forName("oracle.jdbc.driver.OracleDriver");  //加载驱动程序
		//连接数据库
		conn=DriverManager.getConnection("jdbc:oracle:thin:gome/gome@localhost:1521:oracle11");  
		pstmt = conn.prepareStatement(sql);//实例化 PreparedStatement
		pstmt.setString(1, name);//设置第一个 “?”的内容
		pstmt.setInt(2, age);//设置第二个 “?”的内容
		pstmt.setString(3, sex);//设置第三个 “?”的内容
		pstmt.setString(4, birthday);//设置第四个 “?”的内容
		pstmt.executeUpdate();//执行数据库更新操作,不需要 SQL
		pstmt.close();//操作关闭
		conn.close();  //数据库关闭
	}
/* 结果:使用 PreparedStatement 完成数据插入操作
 * */
}
/*备注:
 * 创建序列号
 *  create sequence id_seq -- 尽量使用统一前缀命名,方便管理  建议使用table名+_seq 例如:gome_user_seq 
 *      increment by 1   -- 自增步长 这里设置为1   
 *      start with 10     -- 计数起点 这里设置为1   
 *      nomaxvalue       -- 不设置最大值 可选项 maxvalue|minvalue   
 *      nocycle          -- 一直累加,不循环     
 *      cache 10;   
 * 
 * 插入数据
 *  insert into consumer (ID, NAME, AGE, SEX, BIRTHDAY)
 *  values (id_seq.nextval, 'chaoyi', 40, '男', to_date('1991-10-16', 'yyyy-mm-dd'));
 * */

 

模糊查询

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class PreparedStatementDemo02 {
	public static void main(String[] args) throws Exception {
		Connection conn=null; //数据库连接
		PreparedStatement pstmt = null;//数据库操作
		String keyWord = "c";//设置查询关键字
		ResultSet rs = null;//保存查询结果
		String sql = "select id, name, age, sex, birthday from consumer where name like ? or sex like ?";
		Class.forName("oracle.jdbc.driver.OracleDriver");  //加载驱动程序
		//连接数据库
		conn=DriverManager.getConnection("jdbc:oracle:thin:gome/gome@localhost:1521:oracle11");  
		pstmt = conn.prepareStatement(sql);//实例化对象
		pstmt.setString(1, "%"+keyWord+"%");//设置第一个 “?”的内容,要使用模糊查询
		pstmt.setString(2, "%"+keyWord+"%");//设置第二个 “?”的内容,要使用模糊查询
		rs = pstmt.executeQuery();//实例化 ResultSet 对象
		while(rs.next()){//指针向下移动
			int id = rs.getInt(1);//取得 id 内容
			String name = rs.getString(2);//取得 name 内容
			int age = rs.getInt(3);//取得 age 内容
			String sex = rs.getString(4);//取得 sex 内容
			java.util.Date d = rs.getDate(5);//取得 生日 内容
			System.out.print("编号:"+id+"; ");//输出编号
			System.out.print("姓名:"+name+"; ");//输出姓名
			System.out.print("年龄:"+age+"; ");//输出年龄
			System.out.print("性别:"+sex+"; ");//输出性别
			System.out.print("生日:"+d);//输出生日
			System.out.println("\n-----------------------------");//换行
		}
		rs.close();//关闭结果集
		pstmt.close();//操作关闭
		conn.close();  //数据库关闭
	}
/* 结果:模糊查询
 * 编号:6; 姓名:chaoyi; 年龄:30; 性别:男; 生日:2009-10-16
 * -----------------------------
 * 编号:8; 姓名:chaoyi; 年龄:30; 性别:男; 生日:1992-10-10
 * -----------------------------
 * 编号:7; 姓名:ichaoyi; 年龄:35; 性别:男; 生日:2014-07-02
 * -----------------------------
 * 编号:16; 姓名:chaoyi; 年龄:30; 性别:c; 生日:2014-07-03
 * -----------------------------
 * 编号:17; 姓名:yike; 年龄:30; 性别:c; 生日:2014-07-03
-----------------------------
 * */
}
/*备注:模糊查询语句
 * select id, name, age, sex, birthday from consumer where name like '%c%' or sex like '%c%'
 * */

 

 

 

 

 

  • 大小: 48.3 KB
  • 大小: 48.6 KB
分享到:
评论

相关推荐

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

    JDBC 中 PreparedStatement 接口提供的 execute、executeQuery 和 executeUpdate 之间的区别及用法 JDBC 中的 PreparedStatement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。...

    练习3:使用PreparedStatement插入宠物信息.zip

    在Java编程中,PreparedStatement是Java SQL API中的一个接口,它是Statement接口的子接口。这个练习主要涉及如何使用PreparedStatement来插入宠物信息到数据库中。PreparedStatement的主要优势在于它的预编译能力和...

    第10章 JDBC-课后习题1

    PreparedStatement接口实现了预编译功能,允许我们在SQL语句中使用占位符(如`?`),然后在执行时动态设置参数。这有以下优点: - 提高性能:预编译的SQL语句可以重复使用,避免了每次执行时的编译过程。 - 防止...

    PreparedStatement

    jdbc2.0版 PreparedStatement接口的用法

    PreparedStatement和Statement

    2. **PreparedStatement接口** `PreparedStatement`是`Statement`的子接口,用于预编译SQL语句。预编译的SQL语句在数据库端进行处理,提高了执行效率,特别是当同一个SQL语句被多次执行时。此外,`...

    Java使用PreparedStatement接口及ResultSet结果集的方法示例

    总的来说,`PreparedStatement`接口提供了一种更高效、更安全的方式来执行SQL语句,而`ResultSet`接口则用于存储和处理查询结果。在实际开发中,这两个接口是JDBC编程中不可或缺的部分,它们可以帮助我们更好地与...

    JDBC(powernode CD2206)详尽版 (教学视频、源代码、SQL文件)

    2.5 PreparedStatement接口 2.6 ResultSet接口 2.7 DataSource接口 三、JDBC操作数据库的步骤 四、编写第一个JDBC程序 五、注册案例 六、登录案例 6.1 Statement 七、SQL注入 7.1 SQL注入 7.2 出现SQL注入的原因 7.3...

    数据库-数据库编码解决方案

    这个问题其实也很简单,因为PreparedStatement接口必须通过Connection接口来获取实例,而ResultSet接口又必须从Statement或者PreparedStatement接口来获取实例,有了这样的级联关系,问题也就迎刃而解了。...

    【IT十八掌徐培成】Java基础第23天-02.sql注入-preparedstatement-批量插入.zip

    为防止SQL注入,Java提供了PreparedStatement接口。PreparedStatement是Statement的子接口,它的主要特点是预编译SQL语句。在创建PreparedStatement对象时,我们会提供一个包含占位符(如?)的SQL模板,然后在执行时...

    JAVA学习使用JDBC的高级特征创建应用程序PPT教案学习.pptx

    在JDBC中,PreparedStatement接口是Statement接口的一个子接口,它提供了预编译的SQL语句,这对于处理动态参数和提高性能非常关键。下面将详细讨论PreparedStatement接口的高级特性以及如何在应用程序中使用它们。 ...

    《-JDBC快速入门-》

    PreparedStatement接口是JDBC API的核心组件,提供了预编译SQL语句的方法。PreparedStatement接口包括执行SQL语句、获取执行结果等方法。 CallableStatement接口: CallableStatement接口是JDBC API的核心组件,...

    Java软件开发实战 Java基础与案例开发详解 18-2 JDBC类和接口 共16页.pdf

    #### 18.2.4 PreparedStatement接口 `PreparedStatement`接口继承自`Statement`,主要用于执行参数化的SQL语句。相比`Statement`,使用`PreparedStatement`可以避免SQL注入攻击,并提高性能。 - **作用**: 发送包含...

    JDBC常考知识点,常用api

    PreparedStatement接口提供了设置参数的方法,如`setXXX(int index, value)`系列方法,其中XXX代表不同的数据类型。 6. **ResultSet接口**:表示SQL查询的结果集,提供了遍历查询结果的方法,如`next()`、`...

    Java语言SQL接口—JDBC编程技术

    - PreparedStatement接口:设置预编译SQL语句中的参数,执行SQL。 - CallableStatement接口:用于调用存储过程,设置输入/输出参数。 4. JDBC最佳实践: - 使用try-with-resources语句处理资源关闭,确保异常...

    数据库接口解释类包解释

    **PreparedStatement** 是 `Statement` 的子接口,用于执行预编译 SQL 语句。这种类型的语句可以包含占位符(?),这些占位符在执行前会被具体的值替换。这不仅提高了 SQL 语句的执行效率,还增加了应用程序的安全性...

    Java高级教程课件 java数据库教程 JDBC教程 4-jdbc编程(2)(共5页).pptx

    PreparedStatement接口是为了提高SQL语句执行的效率和安全性而设计的。当你需要多次执行相同的SQL语句,比如插入、更新或删除数据,使用PreparedStatement可以避免SQL注入攻击,并且因为预编译的过程,性能通常优于...

    jdbc-增删改查和封装增删改查.docx

    PreparedStatement接口是Statement接口的子接口,使用它可以执行带参数的SQL语句。CallableStatement接口是Statement接口的子接口,使用它可以执行存储过程。 在上面的代码中,我们定义了一个JdbcDemo类,该类提供...

Global site tag (gtag.js) - Google Analytics