gpt4 book ai didi

java - 将preparedStatement添加到select语句中

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

我有一个 select 语句,用于收集用户发布的视频数量。我让它在发布一定数量的视频后返回用户 ID。如果我将其设置为一个值,它就可以正常工作,但我想将用户输入合并到其中。因此,我创建了一个 Jfield 供用户输入数字,但我不确定如何将准备好的语句添加到其中。当我尝试时,我在“?”附近的 sql 语句中收到错误

所以我没有准备好的语句的代码是

            try {

Class.forName("com.mysql.cj.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/userdatabase", "root", "pass1234");
Statement stmt= con.createStatement();
String sql =" SELECT userid FROM video GROUP BY userid HAVING COUNT(video_name) = 2";



ResultSet rs=stmt.executeQuery(sql);
while (rs.next()) {
// handle row

{


String i = rs.getString("userid");





model.addRow(new Object[]{i});
table.setModel(model);

}
}
{

con.close();}
} catch(Exception e) {System.out.print (e);}



}

这是我试图添加的准备好的语句,我添加了“?”值(value)到我目前拥有的“2”。

String enter = txtEnter.getText();
PreparedStatement prep = con.prepareStatement(sql);
prep.setString(1,enter);

最佳答案

使用 PreparedStatement 时,请勿在 executeQuery() 调用中提供 sql 字符串。

使用 try-with-resources 确保 JDBC 资源正确关闭。

以数字形式提供 SQL 语句参数。

int enter = Integer.parseInt(txtEnter.getText());
String sql = "SELECT userid" +
" FROM video" +
" GROUP BY userid" +
" HAVING COUNT(video_name) = ?";
try (Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/userdatabase", "root", "pass1234");
PreparedStatement stmt = con.prepareStatement(sql)) {
stmt.setInt(1, enter);
try (ResultSet rs = stmt.executeQuery()) {
while (rs.next()) {
// handle row
String userid = rs.getString("userid");
model.addRow(new Object[]{i});
table.setModel(model);
}
}
}

关于java - 将preparedStatement添加到select语句中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59080808/

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