gpt4 book ai didi

java - 准备好的语句,字符串卡在引号中

转载 作者:行者123 更新时间:2023-11-30 07:01:21 25 4
gpt4 key购买 nike

我一直在试图弄清楚为什么我准备好的语句将 ' 放在我的字符串之前和之后。当我尝试将此代码用于我的 Postgressql 数据库服务器时,出现语法错误。这是因为这个程序处理代码如下:

假设我按如下方式调用此方法:

selectStringQuery("username", "users", "id", 1);

然后程序返回以下准备好的语句:

SELECT 'username' FROM 'users' WHERE 'id' = 1;

运行程序时出现如下错误:

org.postgresql.util.PSQLException: ERROR: syntax error at or near "$2"
Position: 16

它应该产生这个:

SELECT username FROM users WHERE id = 1;

有人可以告诉我我在这里缺少什么吗?

 * Executes a select query.
* @param selectFieldName
* @param tableName
* @param conditionFieldName
* @param conditionValue
* @return
*/public String selectStringQuery(String selectFieldName, String tableName, String conditionFieldName, int conditionValue){
try {
// *** Start execution of query ***
query = "SELECT ? FROM ? WHERE ? = ?;";
preparedStatement = prepareStatement(query);
preparedStatement.setString(1, selectFieldName);
preparedStatement.setString(2, tableName);
preparedStatement.setString(3, conditionFieldName);
preparedStatement.setInt(4, conditionValue);
System.out.println(preparedStatement);
resultSet = preparedStatement.executeQuery();
// *** End execution of query ***

// *** Start validity checks ***
if(!resultSet.next()){
System.out.println("Query did not return any results.");
return null;
}
// *** End validity checks ***

// *** Start process query results ***
String result = resultSet.getString(selectFieldName);
return result;
// *** End process query results ***
} catch (Exception ex) {
System.out.println(ex);
return null;
}
}

最佳答案

尝试在查询字符串中连接表名和列名。

query = "SELECT "+selectFieldName+" FROM "+tableName+" WHERE "+conditionFieldName+" = ?;";

我认为你不能将表名和列名作为参数传递。参数被视为列值并向它们添加 ''

关于java - 准备好的语句,字符串卡在引号中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29917253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com