我正在 Java Netbeans 中制作注冊表。我正在使用 CRUD jframe 和 jtable 函式。我還需要實作 MySQL 查詢以將資料保存在 MySQL Workbench 中。但是每當我運行該專案時,都會出現程式說MySQL語法錯誤的錯誤。
private void JB2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add code here:
try
{
Class.forName("com.mysql.cj.jdbc.Driver");
sqlConn = DriverManager.getConnection(data,user,password);
pst = sqlConn.prepareStatement("insert * into tracking_register_db(Name,Surname,Phone,Age,Adress,Email,"
"Temp,Symptoms,Exsposed) value(?,?,?,?,?,?,?,?,?,)");
pst.setString(1, JT1.getText());
pst.setString(2, JT2.getText());
pst.setString(3, JT3.getText());
pst.setString(4, JT4.getText());
pst.setString(5, JT5.getText());
pst.setString(6, JT6.getText());
pst.setString(7, JT7.getText());
pst.setString(8, JT8.getText());
pst.setString(9, JT9.getText());
pst.executeUpdate();
JOptionPane.showMessageDialog(this,"Record added");
upDateDB();
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Registration.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
java.util.logging.Logger.getLogger(Registration.class.getName()).log(Level.SEVERE, null, ex);
}
這是我得到的錯誤:
java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* into tracking_register_db(Name,Surname,Phone,Age,Adress,Email,Temp,Symptoms,Ex' at line 1
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1098)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1046)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1371)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:1031)
at Registration.JB2ActionPerformed(Registration.java:462)
at Registration.access$1000(Registration.java:28)
at Registration$11.actionPerformed(Registration.java:302)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6539)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6304)
at java.awt.Container.processEvent(Container.java:2239)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2297)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
at java.awt.Container.dispatchEventImpl(Container.java:2283)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
at java.awt.EventQueue$4.run(EventQueue.java:733)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
uj5u.com熱心網友回復:
請通過洗掉插入后的 * 和末尾的逗號來更新 MySQL 插入查詢。正確的部分將是-
"insert into tracking_register_db(Name,Surname,Phone,Age,Adress,Email,"
"Temp,Symptoms,Exsposed) value(?,?,?,?,?,?,?,?,?)"
uj5u.com熱心網友回復:
歡迎
首先,我不建議您將 SQL 拆分為許多字串,因為這會使它們難以閱讀。
關于你的問題,我看到至少三個錯誤。
- 該
INSERT INTO陳述句不使用 * - 在
INSERT INTOMySQL中使用單詞VALUES,不value - 有一個尾隨逗號
","
我建議您首先將 SQL 撰寫在可以執行的地方(例如作業臺或 PHPMyAdmin),然后在確認其有效后在代碼中使用它,因為這些工具可以讓您更好地了解錯誤。
有關 INSERT 陳述句的更多資訊,請參閱https://www.w3schools.com/sql/sql_insert.asp
固定的 SQL 看起來像這樣:
pst = sqlConn.prepareStatement("INSERT INTO tracking_register_db(Name,Surname,Phone,Age,Adress,Email,"
"Temp,Symptoms,Exsposed) VALUES (?,?,?,?,?,?,?,?,?)");
uj5u.com熱心網友回復:
Sql 插入陳述句不包含星號:
pst = sqlConn.prepareStatement("insert into tracking_register_db(Name,Surname,Phone,Age,Adress,Email,"
"Temp,Symptoms,Exsposed) values (?,?,?,?,?,?,?,?,?)");
uj5u.com熱心網友回復:
特別是準備好的陳述句不應該被宣告為欄位。
使用 try-with-resources 自動關閉連接、陳述句和結果集(如果有的話)。即使在例外或回傳的情況下。
String sql = "insert into tracking_register_db(Name,Surname,Phone,Age,Adress,Email,"
"Temp,Symptoms,Exsposed) values(?,?,?,?,?,?,?,?,?)"
try {
Class.forName("com.mysql.cj.jdbc.Driver");
try (Connection sqlConn = DriverManager.getConnection(data, user, password);
PreparedStatement pst = sqlConn.prepareStatement(sql)) {
pst.setString(1, JT1.getText());
pst.setString(2, JT2.getText());
pst.setString(3, JT3.getText());
pst.setString(4, JT4.getText());
pst.setString(5, JT5.getText());
pst.setString(6, JT6.getText());
pst.setString(7, JT7.getText());
pst.setString(8, JT8.getText());
pst.setString(9, JT9.getText());
pst.executeUpdate();
JOptionPane.showMessageDialog(this, "Record added",
JOptionPane.INFORMATION_MESSAGE);
upDateDB();
} // Closes sqlConn and pst
} catch (ClassNotFoundException | SQLException ex) {
Logger.getLogger(Registration.class.getName()).log(Level.SEVERE, "No record added", ex);
JOptionPane.showMessageDialog(this, "No record added: " ex.getMessage(),
JOptionPane.ERROR_MESSAGE);
}
輸入錯誤Exsposed?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/369088.html
上一篇:當我收到錯誤“由更新版本的Java運行時(類檔案版本55.0)編譯...”時,如何將JRE或JDK設定為IntelliJ的Java11
下一篇:如何與一組列舉值進行比較
