gpt4 book ai didi

JavaPreparedStatement语法问题

转载 作者:行者123 更新时间:2023-12-01 14:48:01 24 4
gpt4 key购买 nike

我在使用 Java PreparedStatements 时遇到一些 SQL 语法错误问题。

我正在尝试准备的三个声明如下:

insertBook = con.prepareStatement("INSERT INTO Books ? VALUES ?");
selectBooks = con.prepareStatement("SELECT * FROM Books?");
deleteBooks = con.prepareStatement("DELETE FROM Books?");

在第一个语句中,我想传递两个字符串,一个包含要插入的列列表,另一个包含要插入的所有值。在另外两个语句中,我想在末尾插入一个(可选)WHERE 子句。

我已经看过this问题似乎涉及类似的问题,但在他的例子中,他似乎试图在没有意义的地方使用 ? ;除非我在 SQL 方面失败了,否则我看不出有什么理由不能在此处插入字符串。我已经搜索了 Javadocs,但似乎也无法给出解释。

非常感谢!

最佳答案

它就是这样设计的。 ?-s 仅保留参数,请考虑使用 StringBuilder 连接“WHERE”子句。

这只是一个简单的例子,你可能不会在这里使用StringBuilder,它对于构建复杂的查询很有效

这是您的示例

String whereClause = " WHERE Id = ?";

String insert = "INSERT INTO [Table](C1, C2) VALUES(?, ?)";
String select = "SELECT * FROM [Table] ";
String update = "UPDATE [Table] SET C1 = ? ";
String delete = "DELETE FROM [Table] ";

PreparedStatement insertSt = con.prepareStatement(insert);
PreparedStatement selectSt = con.prepareStatement(select + whereClause);
PreparedStatement deleteSt = con.prepareStatement(update + whereClause);
PreparedStatement updateSt = con.prepareStatement(delete + whereClause);

关于JavaPreparedStatement语法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15209061/

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