Android 尝试连接到Microsoft Azure下载数据时,我的应用程序崩溃/停止

Android 尝试连接到Microsoft Azure下载数据时,我的应用程序崩溃/停止,android,Android,我正在测试一个小型Android应用程序,它所做的只是连接到Microsoft Azure SQL数据库以提取数据并进行处理。我刚开始编写连接代码并解决了所有错误,但现在应用程序在加载后崩溃/停止工作 package com.example.azureconnectionstringtest; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql

我正在测试一个小型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;
    }
}
package com.example.azureconnectionstringtest;
导入java.sql.Connection;
导入java.sql.DriverManager;
导入java.sql.ResultSet;
导入java.sql.Statement;
导入android.app.Activity;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.view.Menu;
导入android.widget.Toast;
公共类MainActivity扩展了活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
新建DownloadDataTask().execute();
}
私有类DownloadDataTask扩展了AsyncTask{
@凌驾
受保护的Void doInBackground(Void…参数){
//TODO自动生成的方法存根
字符串连接String=“jdbc:sqlserver://ocgiy0eg0n.database.windows.net" + ";" + 
“数据库=MyDatabaseName”+“;”+
“user=MyUserName”+“;”+
“密码=我的密码”;
Connection Connection=null;//用于建立连接
语句Statement=null;//用于SQL语句
ResultSet ResultSet=null;//用于结果集(如果适用)
试一试{
//确保SQL Server驱动程序类可用。
Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);
//建立连接。
connection=DriverManager.getConnection(connectionString);
String sql=“从主产品列表中选择*”;
statement=connection.createStatement();
resultSet=statement.executeQuery(sql);
if(resultSet.next()){
//要进行数据处理。。。。
}               
}捕获(例外情况除外){
Toast.makeText(getApplicationContext(),例如toString(),Toast.LENGTH_LONG).show();
}
返回null;
}
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.activity\u主菜单);
返回true;
}
}
下面是我的日志:当我运行应用程序时,我得到了这个错误:不幸的是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 
04-1413:33:40.200:E/AndroidRuntime(1016):致命异常:AsyncTask#1
04-14 13:33:40.200:E/AndroidRuntime(1016):java.lang.RuntimeException:执行doInBackground()时出错
04-14 13:33:40.200:E/AndroidRuntime(1016):在android.os.AsyncTask$3.done(AsyncTask.java:299)
04-14 13:33:40.200:E/AndroidRuntime(1016):在java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
04-14 13:33:40.200:E/AndroidRuntime(1016):在java.util.concurrent.FutureTask.setException(FutureTask.java:219)
04-14 13:33:40.200:E/AndroidRuntime(1016):在java.util.concurrent.FutureTask.run(FutureTask.java:239)
04-14 13:33:40.200:E/AndroidRuntime(1016):在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
04-14 13:33:40.200:E/AndroidRuntime(1016):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
04-14 13:33:40.200:E/AndroidRuntime(1016):在java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
04-14 13:33:40.200:E/AndroidRuntime(1016):在java.lang.Thread.run(Thread.java:856)
04-14 13:33:40.200:E/AndroidRuntime(1016):原因:java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序
04-1413:33:40.200:E/AndroidRuntime(1016):在android.os.Handler.(Handler.java:197)
04-1413:33:40.200:E/AndroidRuntime(1016):在android.os.Handler.(Handler.java:111)
04-1413:33:40.200:E/AndroidRuntime(1016):在android.widget.Toast$TN.(Toast.java:324)
04-1413:33:40.200:E/AndroidRuntime(1016):在android.widget.Toast.(Toast.java:91)
04-14 13:33:40.200:E/AndroidRuntime(1016):在android.widget.Toast.makeText(Toast.java:238)上
04-14 13:33:40.200:E/AndroidRuntime(1016):在com.example.azureconnectionstringtest.MainActivity$DownloadDataTask.doInBackground(MainActivity.java:56)
04-14 13:33:40.200:E/AndroidRuntime(1016):在com.example.azureconnectionstringtest.MainActivity$DownloadDataTask.doInBackground(MainActivity.java:1)
04-14 13:33:40.200:E/AndroidRuntime(1016):在android.os.AsyncTask$2.call(AsyncTask.java:287)
04-14 13:33:40.200:E/AndroidRuntime(1016):在java.util.concurrent.FutureTask.run(FutureTask.java:234)
04-1413:33:40.200:E/AndroidRuntime(1016):。。。4更多
04-14 13:33:40.280:W/跟踪(1016):来自nativeGetEnabledTags的意外值:0
04-14 13:33:40.360:W/跟踪(1016):来自nativeGetEnabledTags的意外值:0
04-14 13:33:41.760:带跟踪(1016):来自nativeGetEnabledTags的意外值:0
04-14 13:33:41.860:带跟踪(1016):来自nativeGetEnabledTags的意外值:0
04-14 13:33:42.622:W/跟踪(1016):来自nativeGetEnabledTags的意外值:0
04-14 13:33:42.622:W/跟踪(1016):来自nativeGetEnabledTags的意外值:0
04-14 13:33:42.710:W/跟踪(1016):来自nativeGetEnabledTags的意外值:0
04-14 13:33:43.091:W/跟踪(1016):来自nativeGetEnabledTags的意外值:0
04-1413:33:43.091:I/编舞(1016):跳过91帧!应用程序可能在其主线程上做了太多工作。
04-14 13:33:53.800:I/进程(1016):发送信号。PID:1016信号:9

发布显示抛出异常的日志猫…嗨,Darwind,这是我的日志猫。你能通过外部网络连接到azure数据库吗