Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MySQLSyntaxErrorException_Java_Sql - Fatal编程技术网

Java MySQLSyntaxErrorException

Java MySQLSyntaxErrorException,java,sql,Java,Sql,您好,我目前正在开发一个应用程序来维护某工厂的库存,我在将订单插入数据库时遇到问题。。我试着自己解决这个问题,但我做不到,所以如果有人能帮上忙,我很高兴 这是我的错误 com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the righ

您好,我目前正在开发一个应用程序来维护某工厂的库存,我在将订单插入数据库时遇到问题。。我试着自己解决这个问题,但我做不到,所以如果有人能帮上忙,我很高兴

这是我的错误

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: 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 'order (Add_Order_PID,Customer_idCustomer,Items_idItems,User_idUser,Color,Leather' at line 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3250)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1355)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1270)
at DB.Save_Update_Delete(DB.java:32)
at New_Order1.jButton4ActionPerformed(New_Order1.java:605)
at New_Order1.access$800(New_Order1.java:23)
at New_Order1$9.actionPerformed(New_Order1.java:389)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
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.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:688)
at java.awt.EventQueue$3.run(EventQueue.java:686)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:702)
at java.awt.EventQueue$4.run(EventQueue.java:700)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
我的代码是

for (int i = 0; i < jTable1.getRowCount(); i++) {
            String $Name = "", $Color = "", $Leather = "", $s38 = "", $s39 = "", $s40 = "", $s41 = "", $s42 = "", $s43 = "", $s44 = "", $s45 = "", $s46 = "", Total = "", ItemId = "";
            $Name += jTable1.getValueAt(i, 0)+"";
            $Color += jTable1.getValueAt(i, 1)+"";
            $Leather += jTable1.getValueAt(i, 2)+"";
            $s38 += jTable1.getValueAt(i, 3)+"";
            $s39 += jTable1.getValueAt(i, 4)+"";
            $s40 += jTable1.getValueAt(i, 5)+"";
            $s41 += jTable1.getValueAt(i, 6)+"";
            $s42 += jTable1.getValueAt(i, 7)+"";
            $s43 += jTable1.getValueAt(i, 8)+"";
            $s44 += jTable1.getValueAt(i, 9)+"";

            $s45 += jTable1.getValueAt(i, 10)+"";
            $s46 += jTable1.getValueAt(i, 11)+"";
            Total += jTable1.getValueAt(i, 12)+"";
            ItemId += jTable1.getValueAt(i, 13)+"";
            DB.Save_Update_Delete("insert into order (Add_Order_PID,Customer_idCustomer,Items_idItems,User_idUser,Color,Leather,s38,s39,s40,s41,s42,s43,s44,s45,s46,Total) values ('"+pid+"','"+Integer.parseInt(customerID.getText())+"','"+Integer.parseInt(ItemId)+"','"+Integer.parseInt(UserID.getText())+"','"+$Color+"','"+$Leather+"','"+$s38+"','"+$s39+"','"+$s40+"','"+$s41+"','"+$s42+"','"+$s43+"','"+$s44+"','"+$s45+"','"+$s46+"','"+Total+"')");
        }
for(int i=0;i
您正在用引号(“”)插入int值


更好地使用它,从这里检查Add\u Order\u PID是否为整数。如果它是整数,不要用双引号括起来

对于任何数字数据类型,不要在双引号中加上

最好使用PreparedStatement进行插入

insert into order (Add_Order_PID,Customer_idCustomer,Items_idItems,User_idUser,Color,Leather,s38,s‌​39,s40,s41,s42,s43,s44,s45,s46,Total) values ('8','1','2','1','Black','Leather 1','2','0','0','0','0','0','0','0','0','2')

直接在mysql控制台中尝试sql语句。它将给你更多关于真正问题是什么的信息。可能您违反了某些外键。

请使用prepared语句详细说明“使用prepared语句”:prepared语句更有效,并且不会受到SQL注入攻击,而串联SQL字符串(正如您所使用的)则不会。@FrankSchmitt是PreparedStatement在where子句下添加条件的任意方式,或者我需要先确定所有条件,然后在一次过中做一个准备好的声明。很抱歉,这是离题的。@GauravGupta我建议你就此单独问一个问题;对于这个问题有一些解决方案(即使条件的数量不同,例如,对客户机代码未提供的绑定变量使用虚拟或子句),但有些解决方案是特定于RDBMS的(例如,在Oracle中使用SYS_上下文)。请添加表结构好吗?不确定这是否是问题所在,但通常SQL server会足够聪明,可以为int输入字符串值(单引号)。@Shashi我知道,我使用Oracle和MSSQL进行了测试,但将单引号括在整数周围没有问题。但是对于MYSQL,我在阅读时注意到上面的OP是比较带引号的整数的,所以我想它至少适用于他的MYSQL版本。@JqueryLearner我也尝试了准备好的语句,但给出了相同的结果error@user3615913编辑你的问题,显示您的架构并更新JDBC代码。同时检查每个字段是否有任何值或其空值。您的一些字段不是空值,因此如果插入空值,也会导致问题。我删除了双引号,但他/我收到了相同的错误。除此之外,当我删除双引号时,它看起来像一个字符串。我也尝试了准备好的语句,但它给出了相同的错误。请提供表结构。。使用pastebin.com并提供url。。最好使用表结构更新问题
idOrder
INT NOT NULL AUTO\u INCREMENT,
Add\u Order\u PID
INT NOT NULL,
Customer\u idCustomer
VARCHAR(45)NOT NULL,
Items\u idItems
VARCHAR(25)NOT NULL,
User\u idUser
INT NOT NULL,
Color
VARCHAR(45)NULL,
Leather
VARCHAR(45)NULL,
s38
VARCHAR(45)NULL,
s39
VARCHAR(45)NULL,
s40
VARCHAR(45)NULL,
s41
VARCHAR(45)NULL,
s42
VARCHAR(45)NULL,
s43
VARCHAR 45)NULL,
s44
VARCHAR(45)NULL,
s45
VARCHAR,
s46
VARCHAR(45)NULL,
Total
VARCHAR(45)NULL,`@user3615913请将DB.Save\u Update\u Delete替换为System.out.println并粘贴控制台输出。。。
insert into order (Add_Order_PID,Customer_idCustomer,Items_idItems,User_idUser,Color,Leather,s38,s‌​39,s40,s41,s42,s43,s44,s45,s46,Total) values ('8','1','2','1','Black','Leather 1','2','0','0','0','0','0','0','0','0','2')