本人只是根据原类稍作修改...
实现原理:
重新实现PreparedStatement接口.定义两个辅助变量:sqlTemplate和parameterValues
sqlTemplate带有?的Sql,parameterValues存放参数值,是一个ArrayList.然后在每个set方法中调用saveQueryParamValue
方法设置parameterValues列表...
替换?为参数值的方法:
java 代码
- public String getQueryString() {
-
- StringBuffer buf = new StringBuffer();
- int qMarkCount = 0;
- StringTokenizer tok = new StringTokenizer(sqlTemplate+" ", "?");
- while (tok.hasMoreTokens()) {
- String oneChunk = tok.nextToken();
- buf.append(oneChunk);
-
- try {
- Object value;
- if (parameterValues.size() > 1 + qMarkCount) {
- value = parameterValues.get(1 + qMarkCount++);
- } else {
- if (tok.hasMoreTokens()) {
- value = null;
- } else {
- value = "";
- }
- }
- buf.append("" + value);
- } catch (Throwable e) {
- buf.append(
- "ERROR WHEN PRODUCING QUERY STRING FOR LOG."
- + e.toString());
-
- }
- }
- return buf.toString().trim();
- }
初始化参数列表的方法:
java 代码
- private void saveQueryParamValue(int position, Object obj) {
- String strValue;
- if (obj instanceof String || obj instanceof Date) {
-
- strValue = "'" + obj + "'";
- } else {
-
- if (obj == null) {
-
- strValue = "null";
- } else {
-
- strValue = obj.toString();
- }
- }
-
-
- while (position >= parameterValues.size()) {
- parameterValues.add(null);
- }
-
- parameterValues.set(position, strValue);
- }
分享到:
- 2007-02-15 09:16
- 浏览 4294
- 评论(4)
- 论坛回复 / 浏览 (3 / 4432)
- 查看更多
相关推荐
NULL 博文链接:https://huiminchen.iteye.com/blog/1097332
jdbc2.0版 PreparedStatement接口的用法
NULL 博文链接:https://chaoyi.iteye.com/blog/2088080
此实例意在解决预处理命令PreparedStatement的setString()方法,在sql2008数据库中写入数据时,会自动补足空格的问题, 同时此实例也解决了当存在自动补足空格的问题时,使用nvarchar可以使查找出来的数据与原输入...
7.5 PreparedStatement如何解决SQL注入 7.6 使用PreparedStatement改进代码,解决SQL注入问题 八、编写JDBC工具类 九、CRUD操作 十、事务操作 十一、批处理 11.1 jdbc.properties 11.2 BatchDemo.java 11.3 没有进行...
sqlserver各版本驱动 DriverManager:负责加载各种不同驱动程序(Driver),并根据不同的请求,向调用者返回...PreparedStatement:用以执行包含动态参数的SQL查询和更新(在服务器端编译,允许重复执行以提高效率)
在java中向访问数据库的sql语句一般放到类PreparedStatement类构造函数中,这里遇到的问题就是向sql语句中用setDate()插入时间时不能用java.util.date,而应用java.sql.date,这里就讲述了解决方法,一种是插入...
java中PreparedStatement和Statement的区别
int update(sql , params):是操作insert 、update、delete相关的SQL语句的方法,参数sql,是传入一个满足PreparedStatement结构的SQL语句,params是可变参数,用于传入SQL语句占位符中的占位符。 T querySelector...
PreparedStatement详细用法
练习3:使用PreparedStatement插入宠物信息.zip
关于PreparedStatement插入Date类型值的方法.txt
JDBC中PreparedStatement接口提供的execute、executeQuery和executeUpdate之间的区别及用法
包含于PreparedStatement对象中的SQL语句具有一个或多个IN参数。IN参数的值在SQL语句创建时未被指定。该语句为每一个IN参数保留一个问号(“?”)作为占位符。每个问号的值必须在语句执行之前,通过适当的Setxxx...
JDBC基础教程之PreparedStatement.doc )
包含于 PreparedStatement 对象中的 SQL 语句可具有一个或多个 IN 参数。IN参数的值在 SQL 语句创建时未被指定。相反的,该语句为每个 IN 参数保留一个问号(“?”)作为占位符。每个问号的值必须在该语句执行之前...
Statement和PreparedStatement之间的区别
PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程,下面这篇文章主要给大家介绍了关于利用JDBC的PrepareStatement打印真实SQL的方法,需要的朋友可以参考借鉴,下面来一起看看吧。
JDBC已经能够满足大部分用户最基本的需求,但是在使用JDBC时,必须自己来管理数据库资源如:获取PreparedStatement,设置SQL语句参数,关闭连接等步骤。 JdbcTemplate是Spring对JDBC的封装,目的是使JDBC更加...