2013-03-07 132 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();