jsp sql 中如何得到PreparedStatement类型的值?
通过什么函数取得?我是问如果StringinsertStr="insertintoT_SHOPPINGCARTvalues(?,?,?,?,?)";Connectionc...
通过什么函数取得?
我是问如果
String insertStr = "insert into T_SHOPPINGCART values (?,?,?,?,?)";
Connection conn = null;
PreparedStatement pstmt = null;
conn = getConnection();pstmt = conn.prepareStatement(insertStr);
pstmt.setString(1,"1");
pstmt有没有什么函数来看pstmt中存的sql语句是什么? 展开
我是问如果
String insertStr = "insert into T_SHOPPINGCART values (?,?,?,?,?)";
Connection conn = null;
PreparedStatement pstmt = null;
conn = getConnection();pstmt = conn.prepareStatement(insertStr);
pstmt.setString(1,"1");
pstmt有没有什么函数来看pstmt中存的sql语句是什么? 展开
3个回答
展开全部
首先,很遗憾的告诉你,你使用的PreparedStatement没有一个方法或字段可以让你获得这个“SQL”。
虽然有一些JDBC的Driver支持使用PreparedStatement#toString()获得这个SQL,但是大部分驱动是不支持的。
你能得到的只是一个存在占位符的SQL语句和一组绑定变量值, 你无法从Java或者数据库的任何一方获得最终的SQL语句。
当然,你可以做一些变通的方法来获得PreparedStatement的SQL。
1. 输出PreparedStatement这个带占位符的SQL语句,和绑定的变量列表。 比如,
public static PreparedStatement prepareStatement(Connection connection, String sql, Object... values) throws SQLException {
PreparedStatement preparedStatement = connection.prepareStatement(sql);
for (int i = 0; i < values.length; i++) {
preparedStatement.setObject(i + 1, values[i]);
}
logger.debug(sql + " " + Arrays.asList(values));
return preparedStatement;
}
其实你也可以直接使用log4jdbc来在Log中输出这个SQL语句。
2. 自己写一个输出SQL的自定义方法,当然这个比较耗时间,也许对性能也有损耗,但看你具体的用途和意义。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询