如何实际显示数据库中的单个记录,并在相关的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"));
答案 0 :(得分:2)
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注入的错误语法,所以你必须使用PreparedStatement
修改强>
例如:
try (PreparedStatement stmt = connection.prepareStatement(
"select * from table_name WHERE NOTENAME = ?")) {
stmt.setString(1, lstGetNotes.getSelectedValue());
ResultSet result = stmt.executeQuery();
if (result.next()) {
....
}
}
答案 1 :(得分:1)
1:读取异常:没有列Hello2 ...
2:select * from必须后跟一个表名,而不是一个值:lstGetItems.getSelectedValue()