【发布时间】:2019-03-17 23:24:07
【问题描述】:
我是 Parameterized SQL 的新手,我要做的是用它来更新东西,这很好,但是我有一个(日志)表,其中包含参数化 SQL 的描述发生了什么,当我将参数化 SQL 插入 log_table
它一直显示“?”这个符号
保存日志的代码:
PreparedStatement stat;
ResultSet rs;
String sql="insert into rozhanai_log values (null,?,?,?)";
try
{
stat = conn.prepareStatement(sql);
stat.setString(1,sqlParadanan);//(sqlParadanan) is my parameterized SQL String
stat.setTimestamp(2,time);
stat.setString(3,empName);
stat.execute();
}
catch (Exception e)
{
System.out.println("log Nabw");
e.printStackTrace();
}
和(日志)表中的 SQL 字符串如下所示:
update rozhanai_customer_account set rozhanai_money_balance = rozhanai_money_balance + 1000.0 where rozhanai_account_id=?
我可以在这里做什么?
我正在考虑类似的事情(重新设置参数)?
谢谢
【问题讨论】:
-
是的,它总是会显示
?作为参数。请记住,JDBC 不会将参数作为字符串值“连接”到 PreparedStatement 中。它根据 JDBC 类型在数据库引擎会话中直接插入值。例如,setTimestamp()将发送一个真实的时间戳值,而不是它的字符串表示形式。 -
我建议将值本身呈现为字符串并保存这些字符串而不是 SQL 语句。可能是类似 CSV 的格式。
-
@TheImpaler:Postgres JDBC 驱动程序不是这样。
PreparedStatement.toString()实际上会显示参数值。 -
@a_horse_with_no_name 这个方法很好用,谢谢!
-
@mhamadarsalan 如果有效,请将其发布为答案。它可能有用。
标签: java sql parameterized-query