2013-03-07 94 views
1

我把幫助從this博客文章:com.mysql.jdbc.driver類未發現異常

,但我得到沒有找到com.mysql.jdbc.driver類異常。那篇博客文章的不同之處在於他們試圖在我的情況下連接到mysql而不是MS SQL。這是我的代碼到目前爲止: package com.example.dbtry;

public class MainActivity extends Activity { 
protected TextView tv; 

private static final String url = "jdbc:jtds:sqlserver://Server.com:1433/DB_name"; 
private static final String user = "username"; 
private static final String pass = "password"; 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    testDB(); 
} 

public void testDB() { 
    tv = (TextView)findViewById(R.id.textView1); 
    try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      Connection con = DriverManager.getConnection(url, user, pass); 
      /* System.out.println("Database connection success"); */ 

      String result = "Database connection success\n"; 
      tv.setText(result); 
      Statement st = con.createStatement(); 
      ResultSet rs = st.executeQuery("select * from this_table"); 
      ResultSetMetaData rsmd = rs.getMetaData(); 

      while(rs.next()) { 
       result += rsmd.getColumnName(1) + ": " + rs.getInt(1) + "\n"; 
       result += rsmd.getColumnName(2) + ": " + rs.getString(2) + "\n"; 
       result += rsmd.getColumnName(3) + ": " + rs.getString(3) + "\n"; 
      } 
      tv.setText(result); 
     } 
     catch(Exception e) { 
      e.printStackTrace(); 
      tv.setText(e.toString()); 
     } 

    } 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

} 

請告訴我我做錯了什麼。我還在清單中爲互聯網添加了許可。

+4

搜尋有關SO ClassNotFoundException的JDBC驅動程序,你會發現這樣很多答案。 Driver類不在您的類路徑中。檢查你的罐子。 – 2013-03-07 14:28:14

回答

0

下載從罐子:http://www.java2s.com/Code/Jar/s/Downloadsqljdbc430jar.htm 然後更改如下這些行:

private static final String url = "jdbc:sqlserver://Server.com:1433/DB_name"; 
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
+0

它說端口1433/DB_name無效。該怎麼做? – 2013-03-07 19:00:52

+0

根據您試圖通過端口1433到達數據庫的示例代碼,但首先必須從防火牆配置打開此端口(此鏈接可能會有所幫助http://msdn.microsoft.com/zh-cn/library/ms175043的.aspx)。 – zato 2013-03-08 12:11:18

+0

順便說一下,你的數據庫必須連接到端口1433.你的數據庫沒有任何連接,所以你不需要在URL中寫端口號。 – zato 2013-03-08 12:22:40

2

從此處下載驅動程序JTDS,並將其包含在您的classpath中。構建並運行你的代碼。它會工作。

+0

我已經使用jtds驅動程序,並將它包含在classpath中:S – 2013-03-07 18:28:12

0

您在類路徑中缺少Mysql連接JAR。

這個jar文件包含驅動程序:com.mysql.jdbc.Driver

然而,由於使用的是MSSQL和MySQL的沒有,我建議你找到MSSQL合適的驅動程序。

+0

Jtds也適用於MSSQL:據我所知 – 2013-03-07 18:27:28

+0

但MySQL不是:) – cowls 2013-03-07 20:58:06

0

我想這個網址存在問題。

先嚐試在本地主機上運行,​​然後給出正確的URL。 「jdbc:mysql:// localhost:3306/databaseName」

0

您正在加載MYSQL DB連接的類,您應該爲MS SQL加載該類,並且應該在構建路徑中包含所需的jar文件。 編輯的Class.forName如下行:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();