SQLSyntaxErrorException:“ [”在第7行,第52列

问题描述 投票:1回答:1

第7行出现此语法错误,但我那里没有代码。到目前为止,这是我的代码。招聘包后的空白是第7行。

package recruitment.project;

import java.awt.HeadlessException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
try {
    Class.forName(driver);
    Connection con = DriverManager.getConnection(url, user, pass);
    String query2 = "INSERT INTO APP.Shortlist(ClientID, WorkerID)\n" +
                        "SELECT ClientID, WorkerID\n" +
                        "FROM APP.CLIENT_TABLE, APP.WORKER_TABLE\n" +
                        "WHERE APP.CLIENT_TABLE.WORKER_NEEDED = APP.WORKER_TABLE.JOB_1 OR\n" + 
                        "APP.CLIENT_TABLE.WORKER_NEEDED = APP.WORKER_TABLE.JOB_2 OR\n" +
                        "APP.CLIENT_TABLE.WORKER_NEEDED = APP.WORKER_TABLE.JOB_3 AND\n" +
                        "APP.CLIENT_TABLE.CLIENTID =  " +
                        "" +jTextField1;

    PreparedStatement prepStat = con.prepareStatement(query2);



    prepStat.executeUpdate();
    DefaultTableModel model = (DefaultTableModel)Shortlist_Table.getModel();
    model.setRowCount(0);
    Show_ShortlistInput_In_JTable();
    JOptionPane.showMessageDialog(null, "Record saved.");

} catch (HeadlessException | ClassNotFoundException | SQLException e) {
    JOptionPane.showMessageDialog(null, e);
}

任何帮助都将不胜感激,对此仍然很新。

java mysql database syntax-error
1个回答
0
投票

错误实际上来自SQL解释器,并且由于您未正确使用准备好的语句而引起。您应该准备一个带有占位符的语句,然后为该占位符分配一个值。对于您的情况:

String query2 = "INSERT INTO APP.Shortlist(ClientID, WorkerID)\n" +
                    "SELECT ClientID, WorkerID\n" +
                    "FROM APP.CLIENT_TABLE, APP.WORKER_TABLE\n" +
                    "WHERE APP.CLIENT_TABLE.WORKER_NEEDED = APP.WORKER_TABLE.JOB_1 OR\n" + 
                    "APP.CLIENT_TABLE.WORKER_NEEDED = APP.WORKER_TABLE.JOB_2 OR\n" +
                    "APP.CLIENT_TABLE.WORKER_NEEDED = APP.WORKER_TABLE.JOB_3 AND\n" +
                    "APP.CLIENT_TABLE.CLIENTID =  ?";

PreparedStatement prepStat = con.prepareStatement(query2);
prepStat.setString(1, jTextField1);
prepStat.executeUpdate();

请注意,您的逻辑中可能有错误,我怀疑应该是

                    "WHERE (APP.CLIENT_TABLE.WORKER_NEEDED = APP.WORKER_TABLE.JOB_1 OR\n" + 
                    "APP.CLIENT_TABLE.WORKER_NEEDED = APP.WORKER_TABLE.JOB_2 OR\n" +
                    "APP.CLIENT_TABLE.WORKER_NEEDED = APP.WORKER_TABLE.JOB_3) AND\n" +
                    "APP.CLIENT_TABLE.CLIENTID =  ?";

注意()部分周围的OR

© www.soinside.com 2019 - 2024. All rights reserved.