2012-05-24 129 views
0

我發現了一些答案,但沒有什麼用處。ClassNotFoundException在連接上使用mysql jdbc連接器時android

我加入MySQL的連接器的Java-5.1.7-bin.jar到引用的庫和下面的方法來我的主類活性。

private void getServerData(String id, String type) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException 
{ 
    Log.i("Database Connection", " requesting data from server"); 

    Class.forName("com.mysql.jdbc.Driver").newInstance();    
    Connection con = DriverManager.getConnection("jdbc:mysql://10.0.2.2:3306/db_easy_maintenance", "root", "maintenance"); 
    Statement stm = con.createStatement(); 
    ResultSet rs = stm.executeQuery("SELECT Name FROM industrial_object"); 
    String entry; 
    while(rs.next()) 
    { 
     entry=rs.getString("Name"); 
     Log.i("Database Connection", "getting " + entry); 
    } 

    con.close(); 

} 

我開始我的應用程序,並得到一個拋出java.lang.ClassNotFoundException:在java.lang.Class.classForName com.mysql.jdbc.Driver。

如果我不使用try ... catch ...那麼在編譯之前我得到這個異常。

怎麼了?

+0

您是否還將mysql連接器jar添加到您的類路徑中?不清楚「添加...到引用庫」的含義。 – QuantumMechanic

+0

你把jar放在'libs'中嗎? – 2012-05-24 16:07:50

+0

是的,是的。引用的庫是指 「引用的庫」 中蝕 - >包瀏覽器 - >的myproject –

回答

0

驗證庫是否已導出(在.classpath文件中具有exported="true"屬性)。您也可以在Eclipse的項目設置中的相應選項卡中執行此操作。

+0

確定這就是我的類路徑的文件:? –

+0

\t \t \t \t \t \t

+0

不幸的是不工作 –

0

由於Android使用了不同的字節碼,它可能無法正常工作。 Tyr檢查MySQL JDBC庫是否正確轉換爲Dalvik格式。有一個名爲dex的工具,用於將JVM字節碼轉換爲Dalvik的字節碼。如果JDBC驅動程序包括類不能移植到Android的人或一些本地代碼 - 你不能在Android的

使用
+0

不能找到這個工具。即使谷歌不顯示有用的條目。 –

0

JDBC是Android上的頻繁使用,並且我肯定不會推薦它。

JDBC被設計用於高帶寬,低等待時間,高可靠性的網絡連接(例如,桌面到數據庫服務器,Web應用程序服務器向數據庫服務器)。移動設備很少提供這些功能,而且它們中的任何一項都不一致

所以,我建議你使用備用由上:

創建一個在你數據庫的Web服務和訪問,從Android系統。

作爲附帶好處,可以提高安全性(相對於離開你的數據庫打開),可以從客戶端卸載一些業務邏輯,可以更好地支持其他平臺(例如,網站或基於Web的移動架構)等

+0

我知道和我以前的版本中使用此連接類型,但我的老闆認爲不同我們只使用局域網連接而不想發佈這個應用程序 –

+0

@K_Anas:你可以顯示你說的代碼示例嗎?我的意思是創建Web服務來訪問MySQL數據庫。 – GAMA

0

它應該工作,可能你應該嘗試與另一個JavaSDK和另一個Android平臺。

+0

哪個sdk你推薦? –