2012-10-28 4 views
0

여기에 "path"변수의 데이터베이스 주소가 있고 "tb"는 데이터베이스의 테이블 이름입니다. 내가 오류를 다음있어이 코드를 실행하려고 할 때 나는() 함수 getExportedKeys를 사용하여 ResultSet 객체를 생성하려고 할 때 여기에 나는 테이블 Java를 사용하여 외래 키를 검색하는 중 오류가 발생했습니다.

Connection con = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq="+path); 
      ResultSet rs = null; 
      DatabaseMetaData meta = con.getMetaData(); 
      rs = meta.getExportedKeys(con.getCatalog(), null, "tb"); 
      while (rs.next()) { 
       String fkTableName = rs.getString("FKTABLE_NAME"); 
       String fkColumnName = rs.getString("FKCOLUMN_NAME"); 
       int fkSequence = rs.getInt("KEY_SEQ"); 
       System.out.println("getExportedKeys(): fkTableName="+fkTableName); 
       System.out.println("getExportedKeys(): fkColumnName="+fkColumnName); 
       System.out.println("getExportedKeys(): fkSequence="+fkSequence); 
      } 

에서 외래 키 열 슈퍼 테이블을 검색하기 위해 노력했다.

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Driver does not support 
this function 
     at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958) 
     at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115) 
     at sun.jdbc.odbc.JdbcOdbc.SQLForeignKeys(JdbcOdbc.java:3313) 
     at sun.jdbc.odbc.JdbcOdbcDatabaseMetaData.getExportedKeys(JdbcOdbcDataba 
seMetaData.java:3139) 
     at Frm.actionPerformed(next.java:303) 
     at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:17 
86) 
     at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(Abstra 
ctButton.java:1839) 
     at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel 
.java:420) 
     at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258 
) 
     at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonL 
istener.java:245) 
     at java.awt.Component.processMouseEvent(Component.java:5100) 
     at java.awt.Component.processEvent(Component.java:4897) 
     at java.awt.Container.processEvent(Container.java:1569) 
     at java.awt.Component.dispatchEventImpl(Component.java:3615) 
     at java.awt.Container.dispatchEventImpl(Container.java:1627) 
     at java.awt.Component.dispatchEvent(Component.java:3477) 
     at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483 
) 
     at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198) 

     at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128) 
     at java.awt.Container.dispatchEventImpl(Container.java:1613) 
     at java.awt.Window.dispatchEventImpl(Window.java:1606) 
     at java.awt.Component.dispatchEvent(Component.java:3477) 
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:480) 
     at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh 
read.java:201) 
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre 
ad.java:151) 
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145) 

     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137) 

     at java.awt.EventDispatchThread.run(EventDispatchThread.java:100) 
+1

이것은 MySQL과 어떤 관련이 있습니까? 오래되지 않은 JDBC/ODBC 드라이버를 사용하고 있으며 MySQL이 아닌 MS Access를 사용하고 있습니다. –

+0

죄송합니다.하지만 작동하지 않습니다. 무엇을 할 지 말해주십시오. – user1500872

+1

그건 내 질문에 정말로 답하지 않습니다. 왜 MS Access를 사용하고 있기 때문에 질문의 제목과 태그에서 MySQL에 대해 이야기합니까? –

답변

0

고대 드라이버를 사용하여 타격 MSAccess. 모든 JDBC 상호 작용이 지원되는 것은 아닙니다. 실제 데이터베이스 또는 다른 드라이버를 사용해야합니다.

관련 문제