1

Microsoft SQL 2008 サーバーに接続しようとしています。他のサーバーではうまくいくようですが、うまくいきません。サーバーに直接接続するのがベスト プラクティスではないことは承知していますが、このアプリはデモンストレーションのみを目的としており、私のデバイス以外には配布されません。

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

import net.sourceforge.jtds.jdbc.*;

public void query2()
{
    Log.i("Android"," MySQL Connect Example.");
    Connection conn = null;
    try {
        String driver = "net.sourceforge.jtds.jdbc.Driver";
        Class.forName(driver).newInstance();
        //test = com.microsoft.sqlserver.jdbc.SQLServerDriver.class;
        String connString = "jdbc:jtds:sqlserver://server_ip_address               
        :1433/DBNAME;encrypt=fasle;user=xxxxxxxxx;password=xxxxxxxx;instance=SQLEXPRESS;";
        String username = "xxxxxx";
        String password = "xxxxxxxxxx";
        conn = DriverManager.getConnection(connString,username,password);
        Log.w("Connection","open");
        Statement stmt = conn.createStatement();
        ResultSet reset = stmt.executeQuery("select * from TableName");

        //Print the data to the console
        while(reset.next()){
            Log.w("Data:",reset.getString(3));
            // Log.w("Data",reset.getString(2));
        }
        conn.close();
    } 
    catch (Exception e)
    {
        Log.w("Error connection","" + e.getMessage());
    }
}

そうでない場合、何を変更する必要がありますか? 毎回接続ステートメントでクラッシュします。ありがとうございました。

編集:これはイベントのlogcatです。

12-12 06:11:41.273: E/AndroidRuntime(5745): FATAL EXCEPTION: main 12-12 06:11:41.273: E/AndroidRuntime(5745): java.lang.IllegalStateException: アクティビティ 12 のメソッドを実行できませんでした-12 06:11:41.273: E/AndroidRuntime(5745): android.view.View$1.onClick(View.java:3597) 12-12 06:11:41.273: E/AndroidRuntime(5745): Android で。 view.View.performClick(View.java:4202) 12-12 06:11:41.273: E/AndroidRuntime(5745): android.view.View$PerformClick.run(View.java:17340) 12-12 06: 11:41.273: E/AndroidRuntime(5745): android.os.Handler.handleCallback(Handler.java:725) 12-12 06:11:41.273: E/AndroidRuntime(5745): android.os.Handler.dispatchMessage (Handler.java:92) 12-12 06:11:41.273: E/AndroidRuntime(5745): android.os.Looper.loop(Looper.java:137) 12-12 06:11:41.273: E/AndroidRuntime (5745): android.app.ActivityThread で。main(ActivityThread.java:5039) 12-12 06:11:41.273: E/AndroidRuntime(5745): java.lang.reflect.Method.invokeNative(ネイティブ メソッド) 12-12 06:11:41.273: E/AndroidRuntime (5745): java.lang.reflect.Method.invoke(Method.java:511) 12-12 06:11:41.273: E/AndroidRuntime(5745): com.android.internal.os.ZygoteInit$MethodAndArgsCaller で。実行 (ZygoteInit.java:793) 12-12 06:11:41.273: E/AndroidRuntime(5745): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 12-12 06:11: 41.273: E/AndroidRuntime(5745): dalvik.system.NativeStart.main(Native Method) 12-12 06:11:41.273: E/AndroidRuntime(5745): 原因: java.lang.reflect.InvocationTargetException 12-12 06:11:41.273: E/AndroidRuntime(5745): java.lang.reflect.Method.invokeNative(ネイティブ メソッド) 12-12 06:11:41.273: E/AndroidRuntime(5745): java.lang.reflect で。方法。呼び出し (Method.java:511) 12-12 06:11:41.273: E/AndroidRuntime(5745): android.view.View$1.onClick(View.java:3592) 12-12 06:11:41.273: E /AndroidRuntime(5745): ... 11 詳細 12-12 06:11:41.273: E/AndroidRuntime(5745): 原因: java.sql.SQLException: 適切なドライバーがありません 12-12 06:11:41.273: E/ AndroidRuntime(5745): java.sql.DriverManager.getConnection(DriverManager.java:182) 12-12 06:11:41.273: E/AndroidRuntime(5745): java.sql.DriverManager.getConnection(DriverManager.java:140) ) 12-12 06:11:41.273: E/AndroidRuntime(5745): com.nateapp.finalproject.MainActivity.sendData(MainActivity.java:266) 12-12 06:11:41.273: E/AndroidRuntime(5745): ... 14以上11 詳細 12-12 06:11:41.273: E/AndroidRuntime(5745): 原因: java.sql.SQLException: 適切なドライバーがありません 12-12 06:11:41.273: E/AndroidRuntime(5745): java.sql で.DriverManager.getConnection(DriverManager.java:182) 12-12 06:11:41.273: E/AndroidRuntime(5745): java.sql.DriverManager.getConnection(DriverManager.java:140) 12-12 06:11:41.273 で: E/AndroidRuntime(5745): com.nateapp.finalproject.MainActivity.sendData(MainActivity.java:266) 12-12 06:11:41.273: E/AndroidRuntime(5745): ... 14 もっと見る11 詳細 12-12 06:11:41.273: E/AndroidRuntime(5745): 原因: java.sql.SQLException: 適切なドライバーがありません 12-12 06:11:41.273: E/AndroidRuntime(5745): java.sql で.DriverManager.getConnection(DriverManager.java:182) 12-12 06:11:41.273: E/AndroidRuntime(5745): java.sql.DriverManager.getConnection(DriverManager.java:140) 12-12 06:11:41.273 で: E/AndroidRuntime(5745): com.nateapp.finalproject.MainActivity.sendData(MainActivity.java:266) 12-12 06:11:41.273: E/AndroidRuntime(5745): ... 14 もっと見るE/AndroidRuntime(5745): com.nateapp.finalproject.MainActivity.sendData(MainActivity.java:266) 12-12 06:11:41.273: E/AndroidRuntime(5745): ... 14 もっと見るE/AndroidRuntime(5745): com.nateapp.finalproject.MainActivity.sendData(MainActivity.java:266) 12-12 06:11:41.273: E/AndroidRuntime(5745): ... 14 もっと見る

実行できる必要があるのは、insert ステートメントだけです。

4

1 に答える 1

1

「クラッシュ」はどのように見えますか?スタック トレースを投稿します。

このコードはあらゆるレベルで間違っています。データベースと対話するメソッドでそのように接続を作成するべきではありません。別の場所で作成し (プールから取得するなど)、メソッドに渡すことをお勧めします。

ResultSet閉じたりしないでくださいStatement。を閉じても、Connectionそれらはクリーンアップされません。finallyそれらをブロックで閉じる必要があります。

これがあなたの問題の理由です:

12-12 06:11:41.273: E/AndroidRuntime(5745): Caused by: java.sql.SQLException: No suitable driver

「適切なドライバーがありません」は通常、接続 URL が壊れていることを意味します。それを確認します。

于 2012-12-12T12:43:20.043 に答える