我试图将条目更新到表中,但我一直收到此错误::
java.sql.SQLException:语法错误:12月停止解析(id104)
MS Access Table Design:
PreparedStatement ps = con.prepareStatement("UPDATE Leave_Table SET Jan=?,Feb=?,Mar=?,Apr=?,May=?,Jun=?,Jul=?,Aug=?,Sep=?,Oct=?,Nov=?,Dec=? WHERE LeaveType=?");
ps.setInt(1,Integer.parseInt(JanuaryTF.getText()));
ps.setInt(2,Integer.parseInt(FebruaryTF.getText()));
ps.setInt(3,Integer.parseInt(MarchTF.getText()));
ps.setInt(4,Integer.parseInt(AprilTF.getText()));
ps.setInt(5,Integer.parseInt(MayTF.getText()));
ps.setInt(6,Integer.parseInt(JuneTF.getText()));
ps.setInt(7,Integer.parseInt(JulyTF.getText()));
ps.setInt(8,Integer.parseInt(AugustTF.getText()));
ps.setInt(9,Integer.parseInt(SeptemberTF.getText()));
ps.setInt(10,Integer.parseInt(OctoberTF.getText()));
ps.setInt(11,Integer.parseInt(NovemberTF.getText()));
ps.setInt(12,Integer.parseInt(DecemberTF.getText()));
ps.setString(13,String.valueOf(leavetype.getSelectedItem()));
ps.execute();
根据堆栈跟踪错误似乎是在prepareStatement但我似乎没有得到它。
堆栈跟踪:
java.sql.SQLException: Syntax error: Stopped parse at Dec(id104)
at com.hxtt.global.SQLState.SQLException(Unknown Source)
at com.hxtt.a.b.a(Unknown Source)
at com.hxtt.a.b.a(Unknown Source)
at com.hxtt.a.b.g(Unknown Source)
at com.hxtt.sql.bx.o(Unknown Source)
at com.hxtt.sql.bx.a(Unknown Source)
at com.hxtt.sql.d1.<init>(Unknown Source)
at com.hxtt.sql.bx.a(Unknown Source)
at com.hxtt.sql.bx.prepareStatement(Unknown Source)
at com.hxtt.sql.bx.prepareStatement(Unknown Source)
at com.hxtt.sql.bx.prepareStatement(Unknown Source)
at leave.LeaveSetting.actionPerformed(LeaveSetting.java:231)
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.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:2713)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
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:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
更新:使用jdbc-odbc网桥可以正常运行查询,但不能使用hxtt纯Java驱动程序4.0进行MS Access。
答案 0 :(得分:1)
始终使用一些逻辑且有意义的列名。不要太短,以至于你无法区分它。
在SET
,WHERE
和每个逗号之前加上空格。尝试将所有内容放入单个字符串中。
"UPDATE Leave_Table SET J=?, F=?, M=?, A=?, M=?, J=?, Ju=?, Au=?, Se=?, O=?, N=?, D=? WHERE LeaveType=?"
- 编辑 -
错误是:java.sql.SQLException:语法错误:12月停止解析(id104)
没有列名D
。尝试使用Dec
代替D
"UPDATE Leave_Table SET J=?, F=?, M=?, A=?, M=?, J=?, Ju=?, Au=?, Se=?, O=?, N=?, Dec=? WHERE LeaveType=?"
答案 1 :(得分:0)
你忘了把空格做如下,
PreparedStatement ps = con.prepareStatement("UPDATE Leave_Table" +
" SET J=?,F=?,M=?,A=?,M=?,J=?,Ju=?,Au=?,Se=?,O=?,N=?,D=?" +
" WHERE LeaveType=?");