严重:无效<br>com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxEr



这是我第一次在这里发帖。

所以,在我的netbeans项目中,我一直在犯这个错误,我不知道原因。它说我的SQL语法是错误的,但没有办法。因为我从同一项目中的其他java代码中复制了它(基本上是为模板(,这很好。我甚至通过将代码复制到一个新的java文件来测试它,根据我的需要对它进行更改,它就工作了。

以下是我尝试过的:手动重新键入该文件的所有代码,但仍然无效。尝试从使用表"更改SQL语法;订单;到桌子上";produk";,然后它就工作了,但当更改回时,它会再次发出相同的错误消息。也许桌子有什么问题?所以我尝试在数据库中重新创建表,但仍然没有错误。我也试着通过与项目中的其他类似代码进行比较来检查它。

这是代码:

package DAO;
import Koneksi.Database;
import Model.varOrder;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
public class DAO_Order implements DAO_Interface<varOrder>{
Connection connection;
public DAO_Order(){
connection = Database.KoneksiDB();
}
// Deklarasi SQL Statement
String INSERT = "INSERT INTO order(IDO, Nama, Jenis, Kuantitas) VALUES(?,?,?,?)";
String UPDATE = "UPDATE order set Nama=?, Jenis=?, Kuantitas=? WHERE IDO=?";
String DELETE = "DELETE FROM order WHERE IDO=?";
String SELECT = "SELECT * FROM order";
String CARI = "SELECT * FROM order WHERE IDO=?";
@Override
public void insert(varOrder Object) {
PreparedStatement st = null;
try{
st = connection.prepareStatement(CARI);
st.setString(1, Object.getvIDO());
ResultSet rs = st.executeQuery();
if(rs.next()){
JOptionPane.showMessageDialog(null, "Data sudah pernah di simpan.");
} else{
st = null;
st = connection.prepareStatement(INSERT);
st.setString(1, Object.getvIDO());
st.setString(2, Object.getvNama());
st.setString(3, Object.getvJenis());
st.setString(4, Object.getvKuantitas());
st.executeUpdate();
JOptionPane.showMessageDialog(null, "Data berhasil di simpan.");
}
st.close();
}   catch (SQLException ex){
Logger.getLogger(DAO_Order.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
public void update(varOrder Object) {
PreparedStatement st = null;
try{
st = connection.prepareStatement(UPDATE);
st.setString(1, Object.getvNama());
st.setString(2, Object.getvJenis());
st.setString(3, Object.getvKuantitas());
st.setString(4, Object.getvIDO());
st.executeUpdate();
JOptionPane.showMessageDialog(null, "Data berhasil di update.");
st.close();
} catch (SQLException ex) {
Logger.getLogger(DAO_Order.class.getName()).log(Level.SEVERE, null, ex);
} 
}
@Override
public void delete(String IDO) {
PreparedStatement st = null;
try{
st = connection.prepareStatement(DELETE);
st.setString(1, IDO);
st.executeUpdate();
JOptionPane.showMessageDialog(null, "Data berhasil di hapus.");
st.close();
} catch (SQLException ex) {
Logger.getLogger(DAO_Order.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
public List<varOrder> getAll() {
List<varOrder> list = null;
PreparedStatement st = null;
try{
st = null;
list = new ArrayList<varOrder>();
st = connection.prepareStatement(SELECT);
ResultSet rs = st.executeQuery();
while(rs.next()){
varOrder objOrd = new varOrder();
objOrd.setvIDO(rs.getString("IDO"));
objOrd.setvNama(rs.getString("Nama"));
objOrd.setvJenis(rs.getString("Jenis"));
objOrd.setvKuantitas(rs.getString("Kuantitas"));
list.add(objOrd);
}
st.close();
} catch (SQLException ex) {
Logger.getLogger(DAO_Order.class.getName()).log(Level.SEVERE, null, ex);
}
return list;
}
@Override
public List<varOrder> getCari(String key) {
List<varOrder> list = null;
PreparedStatement st = null;
try{
st = null;
list = new ArrayList<varOrder>();
st = connection.prepareStatement(SELECT);
st.setString(1, "%"+key+"%");
ResultSet rs = st.executeQuery();
while(rs.next()){
varOrder objOrd = new varOrder();
objOrd.setvIDO(rs.getString("IDO"));
objOrd.setvNama(rs.getString("Nama"));
objOrd.setvJenis(rs.getString("Jenis"));
objOrd.setvKuantitas(rs.getString("Kuantitas"));
list.add(objOrd);
}
st.close();
} catch (SQLException ex) {
Logger.getLogger(DAO_Order.class.getName()).log(Level.SEVERE, null, ex);
}
return list;
}

}

这是错误信息:

run:
Nov 11, 2020 2:50:22 PM DAO.DAO_Order getAll
SEVERE: null
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'order' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1053)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2794)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322)
at DAO.DAO_Order.getAll(DAO_Order.java:103)
at Controller.Controller_Order.<init>(Controller_Order.java:32)
at View.FrmOrder.<init>(FrmOrder.java:26)
at View.MenuMinimarket.mnuOrderActionPerformed(MenuMinimarket.java:150)
at View.MenuMinimarket.access$200(MenuMinimarket.java:13)
at View.MenuMinimarket$3.actionPerformed(MenuMinimarket.java:94)
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.AbstractButton.doClick(AbstractButton.java:376)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:842)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:886)
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)

很抱歉语法太差,还有太长的帖子!非常感谢。

Order是SQL中的一个关键字。如果您希望您的桌子被称为";订单";,你应该逃离它:

INSERT INTO `order`(IDO, Nama, Jenis, Kuantitas) VALUES(?,?,?,?);
UPDATE `order` set Nama=?, Jenis=?, Kuantitas=? WHERE IDO=?;
DELETE FROM `order` WHERE IDO=?
SELECT * FROM `order`;
SELECT * FROM `order` WHERE IDO=?

另一种选择是将您的表称为orders,而不是order