Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 无法从tableView将数据设置为textField-在鼠标上单击和上下箭头键(H2数据库)_Sql_Database_Javafx_H2 - Fatal编程技术网

Sql 无法从tableView将数据设置为textField-在鼠标上单击和上下箭头键(H2数据库)

Sql 无法从tableView将数据设置为textField-在鼠标上单击和上下箭头键(H2数据库),sql,database,javafx,h2,Sql,Database,Javafx,H2,我是h2数据库的新用户,我需要一些SQL语法方面的帮助 我能够从h2 dB检索数据并将其设置为JavaFX tableView,在执行鼠标单击或按钮按下操作(向上和向下箭头)时,预期的行为是将当前数据行从tableView显示到文本字段中,下面是代码 我得到以下异常: Invalid value "1" for parameter "parameterIndex" [90008-193] 我确信此异常是由于H2数据库特有的SQL语法造成的,因为占位符(“+slnoField.getText()

我是h2数据库的新用户,我需要一些SQL语法方面的帮助

我能够从h2 dB检索数据并将其设置为JavaFX tableView,在执行鼠标单击或按钮按下操作(向上和向下箭头)时,预期的行为是将当前数据行从tableView显示到文本字段中,下面是代码

我得到以下异常:

Invalid value "1" for parameter "parameterIndex" [90008-193]
我确信此异常是由于H2数据库特有的SQL语法造成的,因为占位符
(“+slnoField.getText()+”)
在其他数据库中工作正常。请您建议正确的语法或解决方案。非常感谢

@FXML
公共void UpdateTable(){
data.clear();
尝试
{
conn=lrconn.getDatabaseConnection();
String sql=“从应用程序表中选择*;
pst=conn.prepareStatement(sql);
rs=pst.executeQuery();
while(rs.next())
{
data.add(新的TestPOJO(
rs.getString(“SLNO”),
rs.getString(“名称”)
));
表2.设置项目(数据);
}
pst.close();
rs.close();
}
捕获(异常e1)
{
e1.printStackTrace();
}
Table.setonmouseclicated((MouseEvent me)->{
试一试{
conn=lrconn.getDatabaseConnection();
TestPOJO user=(TestPOJO)Table.getSelectionModel().getSelectedItem();
String sql=“从APP_表中选择*,其中SLNO='”+slnoField.getText()+”;
pst=conn.prepareStatement(sql);
setString(1,user.getSLNO());
rs=pst.executeQuery();
while(rs.next()){
slnoField.setText(rs.getString(“SLNO”);
nameField.setText(rs.getString(“NAME”);
}
rs.close();
pst.close();
}catch(SQLException-ex){
Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.SEVERE,null,ex);
}
}
);
表.setOnKeyReleased((KeyEvent e)->{
if(e.getCode()==KeyCode.UP | | e.getCode()==KeyCode.DOWN){
试一试{
TestPOJO user=(TestPOJO)Table.getSelectionModel().getSelectedItem();
String sql=“从APP_表中选择*,其中SLNO='”+slnoField.getText()+”;
pst=conn.prepareStatement(sql);
setString(1,user.getSLNO());
rs=pst.executeQuery();
while(rs.next()){
slnoField.setText(rs.getString(“SLNO”);
nameField.setText(rs.getString(“NAME”);
catch(IOException | SQLException ex){
Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.SEVERE,null,ex);
}
}
}
);
}

您没有正确使用
PreparedStatement
。请将
放置在要在查询字符串中插入参数的位置。您似乎没有添加以下内容之一:

String sql=“从应用程序表中选择*,其中SLNO=?”;
pst=conn.prepareStatement(sql);
setString(1,user.getSLNO());
rs=pst.executeQuery();

非常感谢Fabian,忽略了这一点!