0

我正在测试一个小型 Android 应用程序,它所做的只是连接到 Microsoft Azure SQL 数据库以提取数据并进行处理。我刚开始使用连接代码并解决了所有错误,但现在应用程序在加载后崩溃/停止工作。

package com.example.azureconnectionstringtest;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.widget.Toast;

public class MainActivity extends Activity {

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

        new DownloadDataTask().execute();
    }

    private class DownloadDataTask extends AsyncTask<Void, Void, Void> {

        @Override
        protected Void doInBackground(Void... params) {
            // TODO Auto-generated method stub
            String connectionString = "jdbc:sqlserver://ocgiy0eg0n.database.windows.net" + ";" + 
                "database=MyDatabaseName " + ";" + 
                "user=MyUserName" + ";" +  
                "password=MyPassword";
            Connection connection = null;  // For making the connection
            Statement statement = null;    // For the SQL statement 
            ResultSet resultSet = null;    // For the result set, if applicable 
            try {
                // Ensure the SQL Server driver class is available.
                Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");              
                // Establish the connection.
                connection = DriverManager.getConnection(connectionString);
                String sql = "Select * from Master_Product_List";
                statement = connection.createStatement();
                resultSet = statement.executeQuery(sql);
                if(resultSet.next()) {
                    //TO DO data processing....
                }               
            } catch (Exception ex) {
                Toast.makeText(getApplicationContext(), ex.toString(), Toast.LENGTH_LONG).show();
            }
            return null;
        }
    }

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

下面是我的 logcat:当我运行应用程序时出现此错误:不幸的是 AppName 已停止。

04-14 13:33:40.200: E/AndroidRuntime(1016): FATAL EXCEPTION: AsyncTask #1
04-14 13:33:40.200: E/AndroidRuntime(1016): java.lang.RuntimeException: An error occured while executing doInBackground()
04-14 13:33:40.200: E/AndroidRuntime(1016):     at android.os.AsyncTask$3.done(AsyncTask.java:299)
04-14 13:33:40.200: E/AndroidRuntime(1016):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
04-14 13:33:40.200: E/AndroidRuntime(1016):     at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
04-14 13:33:40.200: E/AndroidRuntime(1016):     at java.util.concurrent.FutureTask.run(FutureTask.java:239)
04-14 13:33:40.200: E/AndroidRuntime(1016):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
04-14 13:33:40.200: E/AndroidRuntime(1016):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
04-14 13:33:40.200: E/AndroidRuntime(1016):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
04-14 13:33:40.200: E/AndroidRuntime(1016):     at java.lang.Thread.run(Thread.java:856)
04-14 13:33:40.200: E/AndroidRuntime(1016): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
04-14 13:33:40.200: E/AndroidRuntime(1016):     at android.os.Handler.<init>(Handler.java:197)
04-14 13:33:40.200: E/AndroidRuntime(1016):     at android.os.Handler.<init>(Handler.java:111)
04-14 13:33:40.200: E/AndroidRuntime(1016):     at android.widget.Toast$TN.<init>(Toast.java:324)
04-14 13:33:40.200: E/AndroidRuntime(1016):     at android.widget.Toast.<init>(Toast.java:91)
04-14 13:33:40.200: E/AndroidRuntime(1016):     at android.widget.Toast.makeText(Toast.java:238)
04-14 13:33:40.200: E/AndroidRuntime(1016):     at com.example.azureconnectionstringtest.MainActivity$DownloadDataTask.doInBackground(MainActivity.java:56)
04-14 13:33:40.200: E/AndroidRuntime(1016):     at com.example.azureconnectionstringtest.MainActivity$DownloadDataTask.doInBackground(MainActivity.java:1)
04-14 13:33:40.200: E/AndroidRuntime(1016):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
04-14 13:33:40.200: E/AndroidRuntime(1016):     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
04-14 13:33:40.200: E/AndroidRuntime(1016):     ... 4 more
04-14 13:33:40.280: W/Trace(1016): Unexpected value from nativeGetEnabledTags: 0
04-14 13:33:40.360: W/Trace(1016): Unexpected value from nativeGetEnabledTags: 0
04-14 13:33:41.760: W/Trace(1016): Unexpected value from nativeGetEnabledTags: 0
04-14 13:33:41.860: W/Trace(1016): Unexpected value from nativeGetEnabledTags: 0
04-14 13:33:42.622: W/Trace(1016): Unexpected value from nativeGetEnabledTags: 0
04-14 13:33:42.622: W/Trace(1016): Unexpected value from nativeGetEnabledTags: 0
04-14 13:33:42.710: W/Trace(1016): Unexpected value from nativeGetEnabledTags: 0
04-14 13:33:43.091: W/Trace(1016): Unexpected value from nativeGetEnabledTags: 0
04-14 13:33:43.091: I/Choreographer(1016): Skipped 91 frames!  The application may be doing too much work on its main thread.
04-14 13:33:53.800: I/Process(1016): Sending signal. PID: 1016 SIG: 9 
4

0 回答 0