编辑mysql数据(参数索引超出范围(1>参数个数,为0))
我试图使我的程序能够编辑mysql数据库中的数据。这是将数据输入文本字段后执行操作的jbutton的代码。我希望用户在编辑时输入与他要编辑的行相同的“naziv”列编辑mysql数据(参数索引超出范围(1>参数个数,为0)),mysql,parameters,sql-update,jbutton,Mysql,Parameters,Sql Update,Jbutton,我试图使我的程序能够编辑mysql数据库中的数据。这是将数据输入文本字段后执行操作的jbutton的代码。我希望用户在编辑时输入与他要编辑的行相同的“naziv”列 JButton btnEdituj = new JButton("Edituj"); btnEdituj.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try{
JButton btnEdituj = new JButton("Edituj");
btnEdituj.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try{
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/csprogram","root","");
String query= "UPDATE `maticna ploca` SET `naziv`=value1,`socketi (socket1, socket2)`=value2,`chipset`=value3,`vga port`=value4,`RAM tip i MHz`=value5,`HDD`=value6,`Cijena (KM)`=value7,`Dodatno`=value8 WHERE 'naziv'=value1";
PreparedStatement pst=conn.prepareStatement(query);
pst.setString(1, textField_1.getText());
pst.setString(2, textField_2.getText());
pst.setString(3, textField_3.getText());
pst.setString(4, textField_4.getText());
pst.setString(5, textField_5.getText());
pst.setString(6, textField_6.getText());
pst.setString(7, textField_7.getText());
pst.setString(8, textField_8.getText());
pst.execute();
JOptionPane.showMessageDialog(null, "Data updated");
pst.close();
}
catch (Exception d) {
d.printStackTrace();
}
尝试使用?而不是update语句中的value1作为参数占位符。然后它表示没有为参数9指定值。我有9个问号,只有8个textField.getTextCommand。我想当我写'naziv'列时,我需要为这两种情况编写相同的参数占位符。是这样吗?这就是为什么我使用value1而不是“?”您也可以使用命名参数,但它们可能需要格式:value1,带前导冒号。此外,还必须按名称设置这些参数。但我不清楚这在Java和JDBC中是如何工作的,所以我不能提供详细信息。如果你用这个?占位符,每个?映射到一个值,因此您必须添加一个额外的行来再次为最后一个参数设置相同的值:pst.setString9,textField_1.getText@GolezTrol没有错误,消息说数据已更新,但未更新。有什么想法吗?谢谢你,条件不对的地方引用了这句话naziv'=值1。这应该是backticks,否则仅当参数的值为'naziv'时才更新。