第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);
}
任何帮助都将不胜感激,对此仍然很新。
错误实际上来自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
。