PreparedStatement 的用法
PreparedStatement 继承自 Statement, 所有的 Statement 能进行的操作这里都可以用.
1) 执行速度优化(预编译)
2) 简化 SQL 编写
String sql = "select * from user where username = ?";
3) 增加安全性
SQL 注入攻击
String sql = "select * from user where username = '" + username + "'";
username 输入 1' = '1' or username = '张三
select * from user where username = '1' = '1' or username = '张三'
避免方法: a) 过滤用户输入的特殊字符 '' = ' username.replaceAll("'", "''");
b) 用 PreparedStatement.setString(下标, username) 自动转换输入的字符串为合法
的 SQL 的格式
用法:
// 1. 打开
PreparedStatement pstmt = conn.createPreparedStatement("select * from user where
username = ? and regdate = ?");
// 2. 设置要处理的数据
pstmt.setString(1, "张三");
java.util.Date now = new java.util.Date();
pstmt.setDatetime(2, new java.sql.Date(now.getTime()) );// 设置日期
// 3. 执行查询或者更新
ResultSet rs = pstmt.executeQuery();//
rs = pstmt.executeQuery("select * ..:");//
int rows = pstmt.executeUpdate();// 更新
3. CallableStatement 用来调用存储过程(了解)
在 JDBC 中调用已储存过程的语法如下所示。注意,方括号表示其间的内容是可选项;方
括号本身并不是语法的组成部份。
{call 过程名[(?, ?, ...)]}
返回结果参数的过程的语法为:
{? = call 过程名[(?, ?, ...)]}
不带参数的已储存过程的语法类似:
{call 过程名}
示例代码:
String procedure="{call Operator_login(?,?,?)}";
//注册存储过程
CallableStatement callStmt=conn.prepareCall(procedure);
//注册存储过程输出参数的类型
callStmt.registerOutParameter(3,java.sql.Types.INTEGER);
//提供输入参数的值
callStmt.setString(1,this.operatorID);
callStmt.setString(2,this.password);
//执行存储过程
callStmt.execute();
//返回输出参数
login_state=callStmt.getInt(3);
CallableStatement cs = conn.prepareCall("{call ec_get_cust_terms(?)}");
cs.setInt(1, custNo);
rs = cs.executeQuery();
发表评论
-
Struts标签 下拉框 迭代
2009-09-16 09:08 1589案例: select latnid from t_latn; ... -
控制WebLogic解压war包
2009-09-14 08:28 1722在开发web应用时,如果通过weblogic的控制台部署war ... -
线程的基本用法
2009-06-25 11:04 812实现多线程的方法有3种: 1.继承thread类 eg : ... -
Timer的用法
2009-06-25 09:07 1058使用Timer和TimerTask组合 最后 ... -
线程的通俗解释
2009-06-24 08:26 1313但是进程的概念相 ... -
进程通俗解释
2009-06-24 08:21 878进程(Process)指操作系统中一个独立运行的程序。例 ... -
MyEclipse更改快捷键
2009-06-14 08:22 2306MyEclipse安装完成之后,有一个很常用的快捷键Conte ... -
java最大公约数算法
2009-05-20 20:06 1851最大公约数算法:如果r是a和b之间相除后的余数,则a和b之间的 ... -
创建文件,并填写内容的几种方式
2009-05-15 08:23 976import java.io.*; public class ... -
java 存储过程传递数组类型的参数
2009-05-11 08:06 1504import java.sql.*; public cla ... -
javascript onpropertychange
2009-05-09 14:38 1084<!DOCTYPE HTML PUBLIC " ... -
java.math.BigDecimal的精度问题
2009-05-09 11:21 13511. String myMoney = "100 ... -
JAVA设计模式
2009-04-24 09:15 15091、FACTORY(工厂模式) 2、BUILDER(建造模式 ... -
Struts2入门与配置
2009-04-09 08:21 911年前在上海静静等待回家的日子 , 闲来无事,在好友李三年的 ... -
JavaMail
2009-04-03 09:00 716package com.tom; import org.ap ... -
javascript 动态增加删除表格
2009-02-28 09:19 803<!DOCTYPE HTML PUBLIC " ... -
在web.xml不认<taglib>解决办法:
2009-02-22 20:40 727在web.xml不认<taglib>解决办法: ... -
自己实现单点登录
2009-02-21 16:04 1050摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软 ... -
java多线程并发访问解决方案
2009-02-21 15:40 1432多线程并发访问解决方案 synchronized关键 ... -
JAVA字符串常用写法
2009-02-19 08:31 1483/** * Title: Java Bean 工 ...
相关推荐
3. **准备CallableStatement**:对于调用存储过程,我们需要使用`CallableStatement`对象,它是`PreparedStatement`的子类,专门用于调用数据库存储过程。通过`Connection`对象的`prepareCall()`方法创建。 4. **...
在IT领域,特别是数据库操作与Java编程的交集部分,调用存储过程是常见的需求之一。根据提供的文件信息,我们可以深入解析如何在Java中通过JDBC(Java Database Connectivity)调用Oracle数据库的存储过程。 ### ...
### Java调用存储过程的两种方法 在Java中调用数据库中的存储过程是常见的操作之一,这不仅可以提高程序性能和代码可维护性,还可以更好地利用数据库的功能。根据提供的标题、描述以及部分内容,本文将详细介绍Java...
java调用存储过程,支持获取return值,output返回值,以及查询的表数据,表数据允许有多个查询结果集
在Java编程中,调用Oracle数据库的存储过程和函数是常见的任务,这通常涉及到JDBC(Java Database Connectivity)API的使用。以下将详细介绍这个过程,包括必要的步骤、使用的类和方法,以及可能遇到的问题和解决...
5. PACKAGE和PROCEDURE:PACKAGE和PROCEDURE是Oracle中的两个基本概念,分别用于定义一组相关的函数和过程,以及单个过程。 结论 本文介绍了Java调用Oracle存储过程返回结果集Record和Cursor的相关知识点,包括...
对于有返回值的存储过程,我们可以使用 CallableStatement 对象来调用存储过程,并使用 registerOutParameter 方法来注册输出参数,然后使用 execute 方法来执行存储过程,并获取返回值。 Java 调用存储过程可以...
3. **调用存储过程**:使用`CallableStatement`对象来执行存储过程。对于带参数的存储过程,需要设置参数并执行`executeProcedure()`。 ```java String procedureName = "{call findAllBook(?) }"; // 例如,调用...
"java 调用db2存储过程" 本文将详细介绍 Java 调用 DB2 存储过程的方法和步骤,并提供了详细的代码示例。 ...我们可以使用 CallableStatement 对象来调用存储过程,并将输入参数传递给存储过程。
在Oracle中,调用存储过程通常以`BEGIN`和`END`包围,使用`CALL`关键字。例如: ```java String callProc = "{call package_name.procedure_name(?, ?)}"; PreparedStatement pstmt = connection.prepareCall...
### JAVA调用存储过程知识点详解 #### 一、无结果集返回的存储过程调用 在Java中调用不返回结果集的存储过程时,主要使用`CallableStatement`对象配合预定义的SQL语法来实现。这里以SQL Server 2000数据库为例,并...
能不能写个动态的业务,只输入存储过程名称,自动...只写一个通用方法,就可以调用所有的存储过程。只根据输入不同的存储过程名称、参数内容,自动调用不同的存储过程。 已经使用在多个项目中 全开源项目 请放心下载
本文将详细介绍如何使用Java来调用存储过程,并探讨相关的数据库设计原则。 首先,理解存储过程的基本概念至关重要。存储过程是预编译的SQL语句集合,存储在数据库中并可重复使用。它们提供了性能优化、安全性增强...
### Java调用存储过程的基本步骤 #### 一、加载数据库驱动 在Java程序中调用数据库存储过程的第一步是加载相应的数据库驱动。例如,在本例中使用的Oracle数据库驱动通过以下代码加载: ```java Class.forName(...
使用 `prepareCall` 方法准备调用存储过程 `selemp_sal`,并通过 `registerOutParameter` 注册输出参数类型为 `NUMERIC`。执行后,通过 `getInt` 方法获取输出参数的值。 ### 总结 本文详细介绍了如何在 Java 中...
Java调用存储过程是数据库操作中的常见任务,特别是在复杂业务逻辑和数据处理中。存储过程是一种预编译的SQL语句集合,可以在数据库服务器端执行,提高了效率并减少了网络通信量。本文将详细讲解Java如何调用存储...
4. Java 调用存储过程 在 Java 应用程序中,可以使用 JDBC(Java Database Connectivity)来调用 SQL Server 数据库中的存储过程。在本例中,使用了 `java.sql` 包中的 `CallableStatement` 对象来调用 `InsertUser...
#### 五、使用Java调用存储过程返回游标 最后,我们来看看如何使用Java调用返回游标的存储过程。以下是一个PostgreSQL存储过程`list_early_deaths`的例子,它返回一个游标,其中包含了所有在60岁之前去世的诗人列表...
- **queryProcedure**方法:该方法是核心处理方法,用于调用存储过程,并获取结果集。 - 参数列表: - `List list`:包含要传递给存储过程的参数值列表。 - `String strStoredProcedureName`:存储过程的名称。 ...
`Procedure.java`文件可能是实现了上述步骤的一个Java类示例,而`Java.jpg`可能是一个关于Java调用存储过程的流程图或者代码截图,用于辅助理解和学习。在开发过程中,结合这些资源可以更好地理解和实践Java调用存储...