【问题标题】:java sql syntax errorjava sql语法错误
【发布时间】:2023-03-16 21:34:01
【问题描述】:

我正在编写此代码以从文本字段中获取值并更新我的数据库中的寄存器.. 但它显示“语法错误:在第 1 行第 196 列遇到“\” 当我从jtable中选择另一行时,语法错误中的列号会发生变化..谁能告诉我这里出了什么问题以及我该如何解决 这是代码:

String up = "UPDATE BENEFICTOR SET ID='"+T1.getText().toString()+"', FID='"+T2.getText().toString()+"', FULLNAME='"+T3.getText().toString()+"', GENDER='"+T4.getSelectedItem().toString()+"', IDNUM='"+T5.getText().toString()+"', STATUS='"+T6.getSelectedItem().toString()+"', ORIGINALAREA='"+T7.getText().toString()+"', RECENTAREA='"+T8.getText().toString()+"', EVAL='"+T9.getSelectedItem().toString()+"', PHONENYMBER1='"+T10.getText().toString()+"', PHONENUMBER2='"+T11.getText().toString()+"', SITUATION='"+T12.getText().toString()+"', VISIT='"+T13.getText().toString()+" WHERE ID="+T1.getText().toString();

【问题讨论】:

  • 这与 Swing 或 NetBeans 有什么关系???你有一个 SQL 语法错误。

标签: java sql swing netbeans


【解决方案1】:

摆脱该代码并使用PreparedStatementPreparedStatement 将替换每个“?”为您提供相关参数并使用适当的分隔符:

让您开始:

String sql = "UPDATE BENEFICTOR SET ID = ?, FID = ?, .... WHERE ID = ?";

PreparedStatement stmt = connection.prepareStatement(sql);

stmt.setString( 1, T1.getText() );
stmt.setString( 2, T2.getText() );
...
stmt.setString( ?, T1.getText() );
stmt.executeUpdate();
stmt.close();

【讨论】:

  • 我应该把它作为问号还是用值填充它?
  • 它现在给我:当前语句的至少一个参数未初始化
  • 因此请确保将它们全部初始化。我只给了你前两个的代码。我不知道你有多少参数。您需要对整个 SQL 语句进行编码。我不会为你做这一切。
  • 对不起,我的意思是..我应该像你一样打问号吗?
【解决方案2】:

这样组装sql不聪明,你只是错过了一个','

VISIT='"+T13.getText().toString()+" WHERE ID="+T1.getText().toString();

另一个粗心的行为是……

"UPDATE BENEFICTOR SET ID='"+T1.getText().toString()+"', 
" WHERE ID="+T1.getText().toString();

关注您最初添加的引号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多