2014-07-15 55 views
0

我试图将我的Android设备连接到在MySQL服务器上运行的MySQL数据库。但我不断收到下面的错误。致命异常:AsyncTask#1?

任何人都可以请在这里指出正确的方向吗?

logcat的

07-15 09:17:21.708: E/AndroidRuntime(19677): FATAL EXCEPTION: AsyncTask #1 
07-15 09:17:21.708: E/AndroidRuntime(19677): java.lang.RuntimeException: An error occured while executing doInBackground() 
07-15 09:17:21.708: E/AndroidRuntime(19677): at android.os.AsyncTask$3.done(AsyncTask.java:299) 
07-15 09:17:21.708: E/AndroidRuntime(19677): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352) 
07-15 09:17:21.708: E/AndroidRuntime(19677): at java.util.concurrent.FutureTask.setException(FutureTask.java:219) 
07-15 09:17:21.708: E/AndroidRuntime(19677): at java.util.concurrent.FutureTask.run(FutureTask.java:239) 
07-15 09:17:21.708: E/AndroidRuntime(19677): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
07-15 09:17:21.708: E/AndroidRuntime(19677): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
07-15 09:17:21.708: E/AndroidRuntime(19677): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
07-15 09:17:21.708: E/AndroidRuntime(19677): at java.lang.Thread.run(Thread.java:841) 
07-15 09:17:21.708: E/AndroidRuntime(19677): Caused by: java.lang.VerifyError: net/sourceforge/jtds/jdbc/TdsCore 
07-15 09:17:21.708: E/AndroidRuntime(19677): at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:359) 
07-15 09:17:21.708: E/AndroidRuntime(19677): at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184) 
07-15 09:17:21.708: E/AndroidRuntime(19677): at java.sql.DriverManager.getConnection(DriverManager.java:179) 
07-15 09:17:21.708: E/AndroidRuntime(19677): at java.sql.DriverManager.getConnection(DriverManager.java:213) 
07-15 09:17:21.708: E/AndroidRuntime(19677): at com.example.rf.MainActivity.runSQL(MainActivity.java:110) 
07-15 09:17:21.708: E/AndroidRuntime(19677): at com.example.rf.MainActivity$DoInBackground.doInBackground(MainActivity.java:58) 
07-15 09:17:21.708: E/AndroidRuntime(19677): at com.example.rf.MainActivity$DoInBackground.doInBackground(MainActivity.java:1) 
07-15 09:17:21.708: E/AndroidRuntime(19677): at android.os.AsyncTask$2.call(AsyncTask.java:287) 
07-15 09:17:21.708: E/AndroidRuntime(19677): at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
07-15 09:17:21.708: E/AndroidRuntime(19677): ... 4 more 

CODE

我怎么称呼它:

new DoInBackground().execute(); 

的方法:

private class DoInBackground extends AsyncTask<Void, Void, Void> 
{ 
    @Override 
    protected Void doInBackground(Void...unused) { 
     String response = ""; 
     try { 
      runSQL(); 
     } 
     catch(Exception e) { 
      Log.i("Error", e.toString());   
     } 
     return null; 
    } 
} 

public void runSQL() 
{ 
    String connectionString = "jdbc:jtds:sqlserver://server:1433/DBNAME;instance=SQLEXPRESS"; 
    String userName = "username"; 
    String password = "password"; 
    try { 
     Class.forName("net.sourceforge.jtds.jdbc.Driver"); //specify the jtds driver 

     Connection conn = DriverManager.getConnection(connectionString, userName, password); //establish connection 
     //System.out.println("Connection properly established"); 
     Log.i("Success", "Connected to DB"); 
     conn.close(); 
    } catch (Exception e) 
    { 
     String err = (e.getMessage()==null)?"SD Card failed":e.getMessage(); 
     Log.e("sdcard-err2:",err); 
    } 
} 

UPDATE

我发现了这个问题。问题是,我使用ktds 1.3.1作为连接到数据库的驱动程序,但是这个版本被窃听。所以切换回1.3.0版本解决了我的问题。

感谢您的帮助!

+0

造成的:java.lang.VerifyError的:网/ sourceforge上/ JTDS/JDBC/TdsCore ....有一些认证你未能提供。 –

+0

没问题,所以你的意思是我没有提供一个用户名的说法吗? – user3836282

+0

可能是用户名和密码。 –

回答

1

我假设你正试图从Android客户端连接你的服务器的SQL。 您无法直接从Android客户端连接到SQL服务器。 您需要在服务器端为它创建Web服务。

里面的Web服务,您可以使用适当的JDBC连接..