gpt4 book ai didi

java derby数据库查询,带有用户输入文本

转载 作者:行者123 更新时间:2023-11-30 07:08:26 29 4
gpt4 key购买 nike

我有一个java derby数据库,我可以向数据库写入和读取。

我遇到了麻烦:

将用户在文本字段中输入的文本合并到数据库查询中以确定显示的结果。

我尝试了这种方式,结果是,如果我单击搜索按钮,它会将信息/查询返回到“运行”屏幕,没有实际上将用户输入合并到查询中不过,我必须在代码中执行此操作,将 abc 替换为数据库中的数字。

我必须创建某种命令行参数吗?设置不同的变量?我可以将数据库信息所在的查询信息替换为变量,就像我在接下来的示例中尝试的那样吗?

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {  

String abc = jTextField1.getText();
String data = "jdbc:derby://localhost:1527/sample";
try (
Connection conn = DriverManager.getConnection(
data, "app", "app");
Statement st = conn.createStatement()) {
Class.forName("org.apache.derby.jdbc.ClientDriver");
ResultSet rec = st.executeQuery(
"select ROW1, ROW2, ROW3, ROW4, ROW5 from APP.NAME1 "
+ "where (ROW4 = 'abc')");
while (rec.next()) {
System.out.println("ROW1:\t"
+ rec.getString(1));
System.out.println("ROW2:\t" + rec.getString(2));
System.out.println("ROW3:\t" + rec.getString(3));
System.out.println("ROW4:\t" + rec.getString(4));
System.out.println("ROW5:\t" + rec.getString(5));
System.out.println();
}
st.close();

} catch (SQLException s) {
System.out.println("SQL Error: " + s.toString() + " "
+ s.getErrorCode() + " " + s.getSQLState());
} catch (Exception e) {
System.out.println("Error: " + e.toString()
+ e.getMessage());
}
}
private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {

}

最佳答案

您没有正确设置变量。您需要设置变量,而不是将 ROW4 设置为 'abc'。试试这个。

"select ROW1, ROW2, ROW3, ROW4, ROW5 from APP.NAME1 " + "where (ROW4 = '"+abc+"')"

使用preparedStatement 总是更好。这将避免很多与 SQL 注入(inject)相关的问题。

String selectSQL = "select ROW1, ROW2, ROW3, ROW4, ROW5 from APP.NAME1 where ROW4 = ?";
PreparedStatement preparedStatement = dbConnection.prepareStatement(selectSQL);
preparedStatement.setString(1, abc);
ResultSet rs = preparedStatement.executeQuery(selectSQL );

关于java derby数据库查询,带有用户输入文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39642283/

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