社区
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'
...全文
1255
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',如果是别的类型的怎么写?
利用JDBC的Pre
pa
re
Statement
打印真实
SQL
的方法详解
Pre
pa
red
Statement
是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程,下面这篇文章主要给大家介绍了关于利用JDBC的Pre
pa
re
Statement
打印真实
SQL
的方法,需要的朋友可以参考借鉴,下面来一起看看吧。
踩踩踩JDBC六大步骤
1、JDBC编程六大步: 1)注册driver 1.class.forName(driver) 2.new oracle.jdbc.driver.OracleDriver(); 3.java -Djdbc.drivers=oracle.jdbc.driver.OracleDriver jdbc.drivers=System.gerProperties(); 2)获得
Conn
ection 1.
conn
= DriverManager.get
Conn
ection(url.userName,
pa
sswd); 2.driver.
conn
(url,properties); 3)获得
Statement
简单的
Statement
:
conn
.create
Statement
(); Pre
pa
re
Statement
:
conn
.pre
pa
re
Statement
(String
sql
); Callable
Statement
:
conn
.pre
pa
reCall(String
sql
); 4)
执行
sql
语句
stmt.execute(
sql
); stmt.executeUpdate(
sql
); stmt.executeQuery(
sql
); pstmt.execute*(); 5)获得并处理结果集
Pre
pa
red
Statement
ps =
conn
.pre
pa
re
Statement
(
sql
);在eclipse中跑不通的问题,http报错500
博主在eclipse中运行tomcat跑web项目进行学习的时候,愣是发现老是报错500,500不是404这种连不上数据库的问题。百度了好多都是说标题这句话传的是空指针导致错误,可是我感觉我的问题跟这个空指针有点不一样的。具体代码如下public class UserDAO { //用户名、密码、手机号 //数据的插入 //
sql
// insert into 表名(字段名1,字段名2,....
myeclipse在Pre
pa
red
Statement
ptmt =
conn
.pre
pa
re
Statement
(
sql
);莫名报空指针错误
原因可能是在
得到
conn
的时候出问题,可以通过以下
语句
解决 同时还犯了一个低级错误,没有将my
sql
-
conn
ector-java-xxx.jar加到C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext路劲里,导致程序报No suitable driver found for jdbc的错误 转载于:https://...
2021-05-13
关于使用ps=
conn
.pre
pa
re
Statement
(
sql
)出现的空指针异常 今天在创建数据库连接后,在UserDao类中进行进行数据库的查询时出现了空指针异常的错误。 经过检查发现是运行到这条
语句
出现了异常: String ps =
conn
.pre
pa
re
Statement
(
sql
); 为了判断异常的出处我在它之前加了个条件判断; 结果显示
conn
为空,也就是创建连接传过来的
conn
为空。 也就是JDBC
Conn
ectionUtil的get
Conn
ect()方法返回值为空,这说明数据库连接没
Java SE
62,615
社区成员
307,318
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章