我試圖連接到使用Java的MS Access制造的數(shù)據(jù)庫(kù),但似乎無(wú)法管理。我正在使用ODBC,但出現(xiàn)此異常:java.sql.SQLException:[Microsoft] [ODBC驅(qū)動(dòng)程序管理器]指定的DSN包含驅(qū)動(dòng)程序和應(yīng)用程序之間的體系結(jié)構(gòu)不匹配我的Java:package javaapplication2;import java.sql.Statement;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;/** * * @author Owner */public class JavaApplication2 { /** * @param args the command line arguments * */ public static void main(String[] args) { // TODO code application logic here try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String sourceURL = new String("jdbc:odbc:myDatabase"); System.out.println(sourceURL); Connection dbConnection = DriverManager.getConnection(sourceURL,"admin",""); Statement myStmt = dbConnection.createStatement(); String query = "INSERT INTO People(ID, Name, Surname, Age, Contact, Location, Course) VALUES" + " (1007, 'Elroy', 'Smith', '33', 21366688, 'Somewhere', 'somecourse')"; myStmt.executeUpdate(query); ResultSet results = myStmt.executeQuery("SELECT * FROM People"); while(results.next()) { System.out.print(results.getString(1)); System.out.print(results.getString(2)); System.out.print(results.getString(3)); System.out.println(results.getString(4)); } results.close(); } catch(ClassNotFoundException cnfe) { System.out.println(cnfe); } catch(SQLException sqle) { System.out.println(sqle); } }}
3 回答

慕桂英546537
TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊
這些都不對(duì)我有用。我確實(shí)在MSDN上找到了答案。雖然有暗示。錯(cuò)誤中的體系結(jié)構(gòu)是指32位和64位。我的解決方案是找出我的應(yīng)用程序在(訪問(wèn))2010b為32b下運(yùn)行。我通過(guò)在任務(wù)管理器的“進(jìn)程”選項(xiàng)卡中查找所有32b進(jìn)程的名稱(chēng)結(jié)尾都帶有* 32的字符來(lái)發(fā)現(xiàn)此問(wèn)題。如前所述,控制面板將從此處啟動(dòng)64位版本的ODBC
c:\windows\system32\odbcad32.exe
這里是32位版本:
c:\windows\sysWOW64\odbcad32.exe (最容易復(fù)制并粘貼到運(yùn)行對(duì)話框中)
因此,我在每個(gè)指向同一對(duì)象的ODBC控制面板(AKA管理員)中設(shè)置了以32和64結(jié)尾的DSN。然后,我根據(jù)使用它的應(yīng)用程序是32b還是64b來(lái)選擇/選擇正確的。
添加回答
舉報(bào)
0/150
提交
取消