connection.updateQuery("test_1", id, "UPDATE ? SET question = ?,var1=?,var2=?,var3=?,var4=?,var5=?,var6=?,con1=?,con2=?,con3=?,con4=?,con5=?,con6=?,vidp1=?,vidp2=?,vidp3=?,vidp4=?,ans=?,url_image=? WHERE id = ?", textArea1.getText(), textField1.getText(), textField2.getText(), textField3.getText(), textField4.getText(), textField5.getText(), textField6.getText(), comboBox1.getSelectedItem().toString(), comboBox2.getSelectedItem().toString(), comboBox3.getSelectedItem().toString(), comboBox4.getSelectedItem().toString(), comboBox5.getSelectedItem().toString(), comboBox6.getSelectedItem().toString(), null, null, null, null, ans_(), url_image); public void updateQuery(String name,int id,String query,String text, String var1,String var2,String var3,String var4,String var5,String var6,String con1,String con2,String con3,String con4,String con5,String con6,String vidp1, String vidp2,String vidp3,String vidp4,String ans, String url_image){ try { preparedStatement = connection.prepareStatement(query); preparedStatement.setString(1,name); preparedStatement.setString(2,text); preparedStatement.setString(3,var1); preparedStatement.setString(4,var2); preparedStatement.setString(5,var3); preparedStatement.setString(6,var4); preparedStatement.setString(7,var5); preparedStatement.setString(8,var6); preparedStatement.setString(9,con1); preparedStatement.setString(10,con2); preparedStatement.setString(11,con3); preparedStatement.setString(12,con4); preparedStatement.setString(13,con5); preparedStatement.setString(14,con6); preparedStatement.setString(15,vidp1); preparedStatement.setString(16,vidp2); preparedStatement.setString(17,vidp3); preparedStatement.setString(18,vidp4); preparedStatement.setString(19,ans); preparedStatement.setString(20,url_image); preparedStatement.setInt(21,id); preparedStatement.executeUpdate(); //ошибка } catch (SQLException e) { e.printStackTrace(); } } 

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; If you’re on the right track, you’ll find out if you’re on the right side of the syntax to use the 'test_1' SET question = 'swrweqe \ n2e1; [12elp [p3rl \ nda0123021 \ n3dfwadad', var1 = 'aw' at line 1

how to fix help?

  • one
    In fact, it is not necessary to transfer the name of the updated table as if it were a string literal ... - Akina

2 answers 2

The table name cannot be passed as parameters. Parameters can only pass field values .

  • Well, then how else would I have to perform these queries each time with tables with the same structure but different names, how to do it. It is necessary for the user to see the list of tables and enter the name of the one to be selected - user275180
  • @ user221117 Well, substitute it in the query String.format("UPDATE %s SET question = ?.....", name) - Anton Shchyrov
  • connection.updateQuery (String.format ("UPDATE% s SET question =? .....", name); like this? - user275180
  • @ user221117 yes. - Anton Shchyrov

A couple of suggestions:
1. Form a query with a table lookup before this method.
2. Recycle this method to remove +100500 parameters.
As an option, wrap the passed parameters in a separate class and name it the Right You need a QueryContainer.

  connection.updateQuery( "UPDATE test_1 SET question = ?,var1=?,var2=?,var3=?,var4=?,var5=?,var6=?,con1=?,con2=?,con3=?,con4=?,con5=?,con6=?,vidp1=?,vidp2=?,vidp3=?,vidp4=?,ans=?,url_image=? WHERE id = ?", id, textArea1.getText(),textField1.getText(),textField2.getText(),textField3.getText(),textField4.getText(),textField5.getText(),textField6.getText(),comboBox1.getSelectedItem().toString(),comboBox2.getSelectedItem().toString(),comboBox3.getSelectedItem().toString(),comboBox4.getSelectedItem().toString(),comboBox5.getSelectedItem().toString(),comboBox6.getSelectedItem().toString(),null,null,null,null,ans_(),url_image); public void updateQuery( String query, int id, String var1,String var2,String var3,String var4,String var5,String var6,String con1,String con2,String con3,String con4,String con5,String con6,String vidp1,String vidp2,String vidp3,String vidp4,String ans,String url_image){ try{ preparedStatement=connection.prepareStatement(query); preparedStatement.setString(1,text); preparedStatement.setString(2,var1); preparedStatement.setString(3,var2); preparedStatement.setString(4,var3); preparedStatement.setString(5,var4); preparedStatement.setString(6,var5); preparedStatement.setString(7,var6); preparedStatement.setString(8,con1); preparedStatement.setString(9,con2); preparedStatement.setString(10,con3); preparedStatement.setString(11,con4); preparedStatement.setString(12,con5); preparedStatement.setString(13,con6); preparedStatement.setString(14,vidp1); preparedStatement.setString(15,vidp2); preparedStatement.setString(16,vidp3); preparedStatement.setString(17,vidp4); preparedStatement.setString(18,ans); preparedStatement.setString(19,url_image); preparedStatement.setInt(20,id); preparedStatement.executeUpdate(); //ошибка }catch(SQLException e){ e.printStackTrace(); } }