【发布时间】:2021-02-23 05:18:49
【问题描述】:
这是我第一次在这里发帖。
所以,我在我的 netbeans 项目中一遍又一遍地遇到这个错误,我不知道原因。 它说我的 SQL 语法是错误的,但是没有办法。因为我从同一个项目中的其他 java 代码中复制了它(基本上是一个模板),它工作得很好。我什至通过将代码复制到一个新的 java 文件中对其进行了测试,根据我的需要进行了更改,并且可以正常工作。
这是我尝试过的:手动重新键入此文件的所有代码,但仍然没有用。尝试将 SQL 语法从使用表“order”更改为表“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:`order`。 -
我刚刚尝试过,但它仍然给我同样的错误。但是在我更改了表名之后它现在可以工作了。从“订单”到“订单”。谢谢。
-
哎呀对不起,别管我说的反引号,我认为它会起作用。我想它以前对我不起作用是因为我认为单引号和反引号是相同的
标签: java mysql model-view-controller syntax-error dao