社区
Java SE
帖子详情
如何得到 conn.prepareStatement 最终执行的sql 语句
blueice2002
2006-03-01 11:27:18
请教 如何得到 conn.prepareStatement 最终执行的sql 语句。
stmt = con.prepareStatement(sql);
sql="update table1 set a=?,b=?"
stmt.setObjec t(1,"a");
stmt.setObjec t(2,"b");
希望可以通过
stmt或者conn 得到
update table1 set a='a',b='b'
...全文
1281
20
打赏
收藏
如何得到 conn.prepareStatement 最终执行的sql 语句
请教 如何得到 conn.prepareStatement 最终执行的sql 语句。 stmt = con.prepareStatement(sql); sql="update table1 set a=?,b=?" stmt.setObjec t(1,"a"); stmt.setObjec t(2,"b"); 希望可以通过 stmt或者conn 得到 update table1 set a='a',b='b'
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
blueice2002
2006-03-06
打赏
举报
回复
private static String getSQL(String targetStr, Object[] sqlValues) {
StringTokenizer token = new StringTokenizer(targetStr, "?", false);
StringBuffer buf = new StringBuffer();
for (int i = 0; i < sqlValues.length; i++) {
buf.append(token.nextToken());
buf.append("'" + sqlValues[i] + "'");
}
return buf.toString();
}
blueice2002
2006-03-03
打赏
举报
回复
谢谢大家,查了jdk,发现PreparedStatement
确实没有提供拼sql功能,由于项目中要求出sql log,再者为调试方便,偶自己写了个方法,凑合能用。改天贴出来共享。
blueice2002
2006-03-03
打赏
举报
回复
谢谢大家,查了jdk,发现PreparedStatement
tsrt
2006-03-02
打赏
举报
回复
不知道你得到这个是干吗,不过如果你是想验证下语句对错与否的话,可以投机取巧嘛,把那些问号换成比如 X1 X2 然后用你SETXXX进去的字符替换他们,打印出来,不就可以了嘛。
bit_koko
2006-03-02
打赏
举报
回复
预编译 用这些setString(..), setInt(...), setDate(...)
就可以拉
stmt = con.prepareStatement(sql);
sql="update table1 set a=?,b=?"
stmt.setString(1,"a");
stmt.setString(2,"b");
dlxu
2006-03-02
打赏
举报
回复
借助第三方工具,在JDBC的驱动做手脚,比如p6spy
低调的小青蛙
2006-03-02
打赏
举报
回复
同意楼上大虾们所说,
PreparedStatement 的作用并不是 "帮你拼凑 SQL" 这个功能,prepare 之后,要对数据库进行的操作被优化了,底层并不是以一个 sql 语句提交给数据库的。因此,这个语句应该是得不到的,或者说不存在这个语句。
十分钟年华老去
2006-03-02
打赏
举报
回复
测试的时候通常用string来写的,如果调不通就out.println一下看看有没有问题
xiaobaolove
2006-03-02
打赏
举报
回复
up
如果这都不算爱
2006-03-01
打赏
举报
回复
可用setString(..), setInt(...), setDate(...) ....
doway
2006-03-01
打赏
举报
回复
最终执行的语句就是 "update table1 set a=?,b=?"。
这个语句被编译成二进制代码,这段二进制代码接受两个参数。楼主想想,怎么会有最终的执行语句呢,若是有的话,PreparedStatment 和 Statment 还有什么不同呢?
但办法还是有的,只是太老实了一些:
String sqlForLogAndDebug = ="update table1 set a="+ ... + ",b="+ ...;
老实不好吗?:)
寂寞沙洲
2006-03-01
打赏
举报
回复
恐怕不行,如果要看到sql语句,还是用拼接的方法吧。
crazycy
2006-03-01
打赏
举报
回复
conn.prepareStatement(..)本身不可能得到拼装后的sql语句
但是也不是没有办法解决的,那就是把PreparedStatement类继承并扩展一下,增加你需要的功能
blueice2002
2006-03-01
打赏
举报
回复
要得到sql
1.调试sql 语句
2.写sql log。
zx2002027
2006-03-01
打赏
举报
回复
sql="update table1 set a='a',b='b'"
believefym
2006-03-01
打赏
举报
回复
有String sql的,干吗还要通过stmt、conn得到
treeroot
2006-03-01
打赏
举报
回复
有必要么
TinyJimmy
2006-03-01
打赏
举报
回复
可用setString(..), setInt(...), setDate(...) ....
livelivelive
2006-03-01
打赏
举报
回复
没有相应的方法。
RainRainbow
2006-03-01
打赏
举报
回复
应该得不到吧,object是字符串可以直接写成set a='a',b='b',如果是别的类型的怎么写?
pre
pa
re
Statement
和
Statement
的区别
pre
pa
re
Statement
和
Statement
是 Java 中两个常用的数据库操作接口,它们都可以用来
执行
SQL
语句
,但是它们之间有着明显的区别。 首先,从创建时的区别开始,
Statement
需要通过
Conn
ection 对象的 create
Statement
...
JDBC中
Statement
和Pre
pa
rement的使用讲解
Pre
pa
re
Statement
对象可以预编译
SQL
语句
,提高性能和安全性。下面是一个简单的例子: ```java Pre
pa
red
Statement
pstmt =
conn
.pre
pa
re
Statement
("insert into student_table values(null, ?, 90)"); pstmt....
获取数据库连接
conn
ection ,使用Pre
pa
red
Statement
的
conn
ection.pre
pa
re
Statement
执行
SQL
,多个
SQL
保持事务
获取数据库连接
conn
ection , 使用Pre
pa
red
Statement
的
conn
ection.pre
pa
re
Statement
执行
SQL
,多个
SQL
保持事务。
Pre
pa
red
Statement
ps =
conn
.pre
pa
re
Statement
(
sql
);在eclipse中跑不通的问题,http报错500
博主在eclipse中运行tomcat跑web项目进行学习的时候,愣是发现老是报错500,500不是404这种连不上数据库的问题。百度了好多都是说标题这句话传的是空指针导致错误,... //
sql
// insert into 表名(字段名1,字段名2,....
pre
pa
re
Statement
执行
sql
语句
报错空指针异常
conn
.pre
pa
re
Statement
执行
sql
语句
报错空指针异常 发现是数据库jar包没有导入正确,修改为如图后,恢复正常,空指针异常消失了。
Java SE
62,628
社区成员
307,259
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章