我有一些JDBC代码如下:
String selectSQL = "SELECT * FROM DBUSER WHERE USER_ID = ? and PASSWORD = ?";
Integer userId = 1000;
char[] passwordString = new char[] { 't', 'e', 's', 't' };
PreparedStatement preparedStatement = dbConnection.prepareStatement(selectSQL);
preparedStatement.setInt(1, 1001);
preparedStatement.setArray(2,... ??? // how to do this part?
// execute select SQL statement
ResultSet rs = preparedStatement.executeQuery();
Run Code Online (Sandbox Code Playgroud)
如何调用preparedStatement.setArray在查询中设置第二个参数?我不想在这里使用字符串参数来保护密码.
注意我正在使用Hypersonic DB,但如果这很有用,则计划移动到MySql.
PreparedStatement #setArray收到一个java.sql.Array
首先你应该使用JDBC Conncetion的createArrayOf方法来创建数组,然后才能将它传递给它setArray.
由于该方法只接受Object[]您应该创建一个Character而不是char 的数组.
例如:
Character[] passwordString = new Character[] { 't', 'e', 's', 't' };
Array sqlArray = con.createArrayOf("CHAR", passwordString);
preparedStatement.setArray(2, sqlArray);
Run Code Online (Sandbox Code Playgroud)
看看这段代码
final PreparedStatement statement = connection.prepareStatement(
"SELECT my_column FROM my_table " +
"where search_column IN (SELECT * FROM unnest(?))"
);
final String[] values = getValues();
statement.setArray(1, connection.createArrayOf("text", values));
final ResultSet rs = statement.executeQuery();
try {
while(rs.next()) {
// do some...
}
} finally {
rs.close();
}
Run Code Online (Sandbox Code Playgroud)
另请查看这篇文章以供参考http://people.apache.org/~djd/derby/publishedapi/java/sql/PreparedStatement.html
| 归档时间: |
|
| 查看次数: |
30315 次 |
| 最近记录: |