gpt4 book ai didi

java - 从 Java Derby 数据库中选择特定记录

转载 作者:行者123 更新时间:2023-11-29 04:33:17 25 4
gpt4 key购买 nike

我如何实际显示数据库中的单个记录,记录字段显示在相关的 TextFields 中。
我在下面尝试过,但我选择了其中一个,它只显示一条记录,我哪里出错了?

String driver = "org.apache.derby.jdbc.EmbeddedDriver";
Class.forName(driver);
String host = "jdbc:derby://localhost:1527/NoteDatabase";
String uName = "Simon";
String uPass = "Password";

Connection con = getConnection(host, uName, uPass);
Statement stmt = con.createStatement();
stmt = con.createStatement();

stmt.executeQuery(" select * from " + lstGetItems.getSelectedValue() + "");
ResultSet rs = stmt.getResultSet();
if (rs.next()) {
txtNoteTitle.setText(rs.getString("NOTENAME"));
txtTextInput.setText(rs.getString(2));

这让我得到以下结果。如截图所示

我试过这个来修复,但当我点击同一条笔记时,我得到的只是一个异常。

String driver = "org.apache.derby.jdbc.EmbeddedDriver";
Class.forName(driver);
String host = "jdbc:derby://localhost:1527/NoteDatabase";
String uName = "Simon";
String uPass = "Password";

Connection con = getConnection(host, uName, uPass);
Statement stmt = con.createStatement();
stmt = con.createStatement();

stmt.executeQuery(" select * from " + lstGetItems.getSelectedValue() + " WHERE 'NOTENAME' = " + lstGetNotes.getSelectedValue() + " ");
ResultSet rs = stmt.getResultSet();
if (rs.next()) {
txtNoteTitle.setText(rs.getString("NOTENAME"));
txtTextInput.setText(rs.getString("NOTECONENT"));

enter image description here

最佳答案

Select 的语法是sql select :

SELECT column1, column2, ... FROM table_name;

或者

SELECT * FROM table_name;

因此,在您的情况下,如果您想从用户输入的特定表 (lstGetItems.getSelectedValue()) 中进行选择,那么您必须先检查您的表名是否存在做出选择。

如果您想使用 WHERE something = somethingelse 从您的表中进行选择,您的第二个查询是不正确的,因为您错过了将字符串放在两个 '' 之间并删除了列名称中的两个 '' 因此您必须使用:

stmt.executeQuery(" select * from "+ lstGetItems.getSelectedValue() +" WHERE NOTENAME = '" + lstGetNotes.getSelectedValue() + "' " );

我认为 lstGetItems.getSelectedValue() 是您的表名。
NOTENAME 是您的列名称。
并且 lstGetNotes.getSelectedValue() 您的列的值。

但是你的方式不安全并且可能导致 SQL 注入(inject)的错误语法所以你必须使用 PreparedStatement


编辑

例如:

try (PreparedStatement stmt = connection.prepareStatement(
"select * from table_name WHERE NOTENAME = ?")) {
stmt.setString(1, lstGetNotes.getSelectedValue());

ResultSet result = stmt.executeQuery();
if (result.next()) {
....
}
}

关于java - 从 Java Derby 数据库中选择特定记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42885587/

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