Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 致命异常:AsyncTask#1?_Java_Android_Sql - Fatal编程技术网

Java 致命异常:AsyncTask#1?

Java 致命异常:AsyncTask#1?,java,android,sql,Java,Android,Sql,我正在尝试将我的Android设备连接到MySQL服务器上运行的MySQL DB。但我一直得到下面所述的错误 有人能给我指一下正确的方向吗 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 ex

我正在尝试将我的Android设备连接到MySQL服务器上运行的MySQL DB。但我一直得到下面所述的错误

有人能给我指一下正确的方向吗

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
方法:

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);  
    }
}
私有类DoInBackground扩展异步任务
{
@凌驾
受保护的空位背景(空位…未使用){
字符串响应=”;
试一试{
runSQL();
}
捕获(例外e){
Log.i(“Error”,例如toString());
}
返回null;
}
}
public-void-runSQL()
{
字符串连接String=“jdbc:jtds:sqlserver://server:1433/DBNAME;实例=SQLEXPRESS”;
字符串userName=“userName”;
字符串password=“password”;
试一试{
Class.forName(“net.sourceforge.jtds.jdbc.Driver”);//指定jtds驱动程序
Connection conn=DriverManager.getConnection(connectionString、用户名、密码);//建立连接
//System.out.println(“正确建立的连接”);
Log.i(“成功”,“连接到DB”);
康涅狄格州关闭();
}捕获(例外e)
{
字符串err=(e.getMessage()==null)?“SD卡失败”:e.getMessage();
Log.e(“sdcard-err2:,err”);
}
}
更新

我发现了问题所在。问题是,我使用KTDS1.3.1作为连接DB的驱动程序,但是这个版本有bug。因此,切换回1.3.0版本解决了我的问题


谢谢你的帮助

我假设您正在尝试从android客户端连接服务器的SQL。 您无法从android客户端直接连接到SQL server。 您需要在服务器端为其创建web服务

  • 若服务器是JAVA,那个么您可以使用
  • 在Android端,您可以使用REST服务
  • 对于两侧的JSON对象映射(Android、Java后端),您可以使用

在web服务内部,您可以使用适当的JDBC连接。

原因是:java.lang.VerifyError:net/sourceforge/jtds/JDBC/TdsCore。……您无法提供一些身份验证。好的,因此,您的意思是我没有提供用户名,例如?可能是用户名和密码。@user3836282:SQL数据库应该驻留在哪里?它是在android客户端还是服务器中?
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);  
    }
}