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 1602案例: select latnid from t_latn; ... -
控制WebLogic解压war包
2009-09-14 08:28 1735在开发web应用时,如果通过weblogic的控制台部署war ... -
线程的基本用法
2009-06-25 11:04 831实现多线程的方法有3种: 1.继承thread类 eg : ... -
Timer的用法
2009-06-25 09:07 1087使用Timer和TimerTask组合 最后 ... -
线程的通俗解释
2009-06-24 08:26 1331但是进程的概念相 ... -
进程通俗解释
2009-06-24 08:21 900进程(Process)指操作系统中一个独立运行的程序。例 ... -
MyEclipse更改快捷键
2009-06-14 08:22 2327MyEclipse安装完成之后,有一个很常用的快捷键Conte ... -
java最大公约数算法
2009-05-20 20:06 1865最大公约数算法:如果r是a和b之间相除后的余数,则a和b之间的 ... -
创建文件,并填写内容的几种方式
2009-05-15 08:23 987import java.io.*; public class ... -
java 存储过程传递数组类型的参数
2009-05-11 08:06 1527import java.sql.*; public cla ... -
javascript onpropertychange
2009-05-09 14:38 1102<!DOCTYPE HTML PUBLIC " ... -
java.math.BigDecimal的精度问题
2009-05-09 11:21 13581. String myMoney = "100 ... -
JAVA设计模式
2009-04-24 09:15 15231、FACTORY(工厂模式) 2、BUILDER(建造模式 ... -
Struts2入门与配置
2009-04-09 08:21 928年前在上海静静等待回家的日子 , 闲来无事,在好友李三年的 ... -
JavaMail
2009-04-03 09:00 725package com.tom; import org.ap ... -
javascript 动态增加删除表格
2009-02-28 09:19 823<!DOCTYPE HTML PUBLIC " ... -
在web.xml不认<taglib>解决办法:
2009-02-22 20:40 747在web.xml不认<taglib>解决办法: ... -
自己实现单点登录
2009-02-21 16:04 1059摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软 ... -
java多线程并发访问解决方案
2009-02-21 15:40 1442多线程并发访问解决方案 synchronized关键 ... -
JAVA字符串常用写法
2009-02-19 08:31 1503/** * Title: Java Bean 工 ...
相关推荐
3. **准备CallableStatement**:对于调用存储过程,我们需要使用`CallableStatement`对象,它是`PreparedStatement`的子类,专门用于调用数据库存储过程。通过`Connection`对象的`prepareCall()`方法创建。 4. **...
java调用存储过程,支持获取return值,output返回值,以及查询的表数据,表数据允许有多个查询结果集
在Java编程中,调用Oracle数据库的存储过程和函数是常见的任务,这通常涉及到JDBC(Java Database Connectivity)API的使用。以下将详细介绍这个过程,包括必要的步骤、使用的类和方法,以及可能遇到的问题和解决...
本篇文章将深入探讨如何使用Java与MySQL数据库进行交互,实现调用存储过程,并提供一个测试通过的实例。 首先,理解存储过程是数据库管理系统提供的一种预编译的SQL语句集合,它封装了特定的功能,可以提高执行效率...
5. PACKAGE和PROCEDURE:PACKAGE和PROCEDURE是Oracle中的两个基本概念,分别用于定义一组相关的函数和过程,以及单个过程。 结论 本文介绍了Java调用Oracle存储过程返回结果集Record和Cursor的相关知识点,包括...
3. **调用存储过程**:使用`CallableStatement`对象来执行存储过程。对于带参数的存储过程,需要设置参数并执行`executeProcedure()`。 ```java String procedureName = "{call findAllBook(?) }"; // 例如,调用...
在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(...
Java调用存储过程是数据库操作中的常见任务,特别是在复杂业务逻辑和数据处理中。存储过程是一种预编译的SQL语句集合,可以在数据库服务器端执行,提高了效率并减少了网络通信量。本文将详细讲解Java如何调用存储...
4. Java 调用存储过程 在 Java 应用程序中,可以使用 JDBC(Java Database Connectivity)来调用 SQL Server 数据库中的存储过程。在本例中,使用了 `java.sql` 包中的 `CallableStatement` 对象来调用 `InsertUser...
- **queryProcedure**方法:该方法是核心处理方法,用于调用存储过程,并获取结果集。 - 参数列表: - `List list`:包含要传递给存储过程的参数值列表。 - `String strStoredProcedureName`:存储过程的名称。 ...
`Procedure.java`文件可能是实现了上述步骤的一个Java类示例,而`Java.jpg`可能是一个关于Java调用存储过程的流程图或者代码截图,用于辅助理解和学习。在开发过程中,结合这些资源可以更好地理解和实践Java调用存储...
birt报表中调用存储过程的方法. 目录 1. 概述 3 2. BIRT支持的存储过程返回值类型 3 3. BIRT调用存储过程的语法 4 4. 创建存储过程数据源/集 4 5. 在BIRT中使用存储过程 5 调用返回单结果集的存储过程。 5 调用...
调用存储过程需要使用 CallableStatement 对象,首先需要使用 Connection 对象的 prepareCall() 方法准备一个可调用语句,然后将参数设置到 CallableStatement 对象中。在本文中,存储过程的名称为 "srforcrm....
无论是Java还是C#,调用存储过程都需要理解数据库的架构和参数类型。在实际开发中,可能还会涉及事务管理、异常处理等复杂情况。对于新手来说,理解这些基础知识并能正确地编写调用存储过程的代码是非常重要的,这将...
本实例将深入探讨如何使用Java来调用Oracle数据库中的存储过程。 首先,我们需要了解存储过程的基本概念。存储过程是预编译的SQL语句集合,存储在数据库服务器上,可以视为可重复使用的函数,提高了代码的重用性和...
下面将详细介绍如何使用Java调用存储过程。 1. **创建CallableStatement对象** 首先,我们需要创建一个`CallableStatement`实例,这可以通过`Connection`对象的`prepareCall`方法完成。存储过程的调用格式通常以`...