java中PrepareStatement使用的一点小问题
在学习连接池原理的时候,写了个小小的连接池,在使用prepareStatement的时想到,我的连接是保存在连接池中,没有关闭,每次获取的prepareStatement中上次保存的参数是否还在?会不会影响下次的使用?
实验的时间到了:
1.先看看上一个操作使用的参数是否存在
Connection conn=DBConnectionManager.getInstance().getConnection();//从连接池获取连接
PreparedStatement ps=conn.prepareStatement("select * from s_user where vusercode=? or vusercode=?");
ps.setObject(1, "jimmy");
ps.setObject(2, "huangy");
ps.executeQuery();
PreparedStatement ps2=conn.prepareStatement("select * from s_user where vusercode=? or vusercode=?");
ps2.clearParameters();
ParameterMetaData meta=ps2.getParameterMetaData();
System.out.println(meta.getParameterCount());
结果是显示2,说明参数还在。
2.实际执行一下第二条语句,看看结果如何
Connection conn=DBConnectionManager.getInstance().getConnection(); PreparedStatement ps=conn.prepareStatement("select * from s_user where vusercode=? or vusercode=?"); ps.setObject(1, "jimmy"); ps.setObject(2, "huangy"); ps.executeQuery(); PreparedStatement ps2=conn.prepareStatement("select * from s_user where vusercode=? or vusercode=?"); ps2.clearParameters(); ParameterMetaData meta=ps2.getParameterMetaData(); System.out.println(meta.getParameterCount()); ps2.executeQuery();
结果为:
Exception in thread "main" com.ibm.db2.jcc.b.nm: [jcc][10143][10845][3.50.152] 参数 1 无效:未设置或注册参数。 ERRORCODE=-4461, SQLSTATE=42815at com.ibm.db2.jcc.b.wc.a(wc.java:579)at com.ibm.db2.jcc.b.wc.a(wc.java:57)at com.ibm.db2.jcc.b.wc.a(wc.java:102)at com.ibm.db2.jcc.b.uk.Xb(uk.java:3848)at com.ibm.db2.jcc.b.uk.e(uk.java:2848)at com.ibm.db2.jcc.b.uk.yb(uk.java:535)at com.ibm.db2.jcc.b.uk.executeQuery(uk.java:509)at cn.hy.test.test.main(test.java:29)
好吧,报错了,提示参数无效,这是我希望的,实验结束。当我想看看这是什么原理,发现反编译的代码看不懂……这里得问问园子里各位了。
转载于:https://www.cnblogs.com/dazui/archive/2012/11/19/2776709.html
java中PrepareStatement使用的一点小问题相关推荐
- 聊聊我们Java中代码优化的30个小技巧
今天我们一起聊聊Java中代码优化的30个小技巧,希望会对你有所帮助. 1.用String.format拼接字符串 不知道你有没有拼接过字符串,特别是那种有多个参数,字符串比较长的情况. 比如现在有个 ...
- Java 中代码优化的 30 个小技巧(上)
前言 今天我们一起聊聊 Java 中代码优化的 30 个小技巧,希望会对你有所帮助. 1 用 String.format 拼接字符串 不知道你有没有拼接过字符串,特别是那种有多个参数,字符串比较长的情 ...
- Java 中代码优化的 30 个小技巧(中)
11 位运算效率更高 如果你读过 JDK 的源码,比如 ThreadLocal.HashMap 等类,你就会发现,它们的底层都用了位运算. 为什么开发 JDK 的大神们,都喜欢用位运算? 答:因为位运 ...
- Java 中代码优化的 30 个小技巧(下)
21 防止死循环 有些小伙伴看到这个标题,可能会感到有点意外,代码中不是应该避免死循环吗?为啥还是会产生死循环? 殊不知有些死循环是我们自己写的,例如下面这段代码: while(true) {if(c ...
- Java中代码优化的30个小技巧
1.用String.format拼接字符串 String.format方法拼接url请求参数,日志打印等字符串. 但不建议在for循环中用它拼接字符串,因为它的执行效率,比使用+号拼接字符串,或者使用 ...
- Java中不可或缺的59个小技巧,贼好用!
来源:https://blog.dogchao.cn/?p=70 <Effective JavaJava>名著,必读.如果能严格遵从本文的原则,以编写API的质量来苛求自己的代码,会大大提 ...
- Java中使用图片验证码 --菜鸟小回
Java中使用图片验证码 一.第一种方式 工具类 @WebServlet("/BufferImage") public class BufferImage extends Http ...
- 关于JAVA中十进制转换二进制的小程序
对于java中求二进制是将一个数分开成整数部分和小数部分,整数部分的按照除以2直到是0为止:小数部分是按照乘以2取整到0为止,对于特殊的小数就循环15次为止, 以下是代码: //十进制小数和整数的二进 ...
- java中的jgroup_JGroups实现聊天小程序
本文实例为大家分享了JGroups实现聊天小程序的具体代码,供大家参考,具体内容如下 效果图: 代码部分: package com.lei.jgoups; import java.io.Buffere ...
- java中jstl核心包丢失,小博老师解析Java核心技术 ——JSTL核心标签库
[引言] JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,由四个定制标记库(core.format.xml 和 sql)和一对通 ...
最新文章
- [每日一讲] Python系列:Python概述
- 还搞不懂 Java NIO?快来读读这篇文章!
- java新手笔记1 Hello World!
- 正则邮箱_自己写一个通用的邮箱正则表达式
- android远程桌面软件毕设_2019 远程桌面解决方案综述
- Xml文件保存值不能及时更新
- android之menu,一起学Android之Menu
- 乌龟Git clone失败错误码128解决办法
- 结合实际聊聊电平转换电路(常用电平转换电路总结)
- js封装倒计时函数实现倒计时效果
- 18966 两两配对差值最小
- 重组标签云-标签聚类及其评价研究
- 企业微信视频教程(Java标准版)-翟东平-专题视频课程
- 【哈夫曼树】创建哈夫曼树
- Java高并发程序设计(三)——JDK并发包(二)
- 学习汇编语言的重要性
- Linux环境部署Node.js
- Mod Organizer下载教程
- 生活的改变从这一刻开始:香港之旅
- early_stopping
热门文章
- HDU-1045 Fire NetFire Net 最大团
- go -context
- 如何制作通讯录vcf_【教程】刷机或更换手机后快速导入通讯录的方法
- 通过界面上传jar包到maven Nexus私服
- python打开word内对象_Python操作Word:常用对象介绍
- 【渝粤教育】国家开放大学2018年春季 8038-22T实用管理基础 参考试题
- 【渝粤教育】电大中专学前儿童健康教育 (7)作业 题库
- 【渝粤教育】电大中专职业生涯规划作业 题库
- 字符串未被识别为有效的布尔值
- 计算机视觉实战(十四)答题卡识别 (附完整代码)