当输入数据时,内部连接多个表中包含错误的表 - Java

时间:2014-01-03 01:20:35

标签: java ms-access

之前我已将关于内部联接的问题发布到多个表中。并且很可能SQL内部联接代码不是问题。

rsTry = stmtTry.executeQuery(

"SELECT * FROM (User Inner Join CPU On User.SN = CPU.SN) Inner Join Software on CPU.SN = Software.SN");

以下是存储在数据库中的代码

    rsTry.moveToInsertRow();
    rsTry.updateString(1, jtfSN.getText());
    rsTry.updateString(2, jtfName.getText());
    rsTry.updateString(3, jtfDepartment.getText());
    rsTry.updateString(4, jtfHostname.getText());
    rsTry.updateString(5, jtfModel.getText());
    rsTry.updateString(6, jtfBrand.getText());
    rsTry.updateString(9, jtfMsOffice.getText());
    rsTry.updateString(10, jtfMsVisio.getText());
    rsTry.insertRow();

我的表设计

User - SN | Name | Department
CPU - Hostname | Model | Brand | SN
S/w - SN | MsOffice | MsVisio

我对内连接2表没有问题,并且还管理更新数据。 但是当我尝试提交数据时,内部连接3个表格会弹出

ava.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Syntax error in JOIN operation.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6964)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7121)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3117)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:337)
at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:252)
at testing.NewJFrame.testingJoint(NewJFrame.java:64)
at testing.NewJFrame.actionPerformed(NewJFrame.java:40)
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:3320)
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:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
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:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
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)

建立成功(总时间:3秒)

1 个答案:

答案 0 :(得分:0)

解决问题

例如 -

表A |用户名(PK)|地址|

表B | ID |电话|用户名(FK)|

表C | SN |品牌|型号|用户名(FK)

rs = st.executeQuery

("SELECT * FROM (A Inner Join B on A.Username = B.Username) Inner Join C on A.Username = C.Username");

如果有人通过使用JAVA和链接访问来寻找内部连接3个表 使用上面的参考。

确保在运行java程序之前必须链接Access中的表关系,否则会弹出“ERROR IN ROW”

感谢所有帮助我的人:)