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): 致命异常: 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): at java.lang.reflect.Method.invokeNative(Native Method) 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): at 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(Native Method) 12-12 06:11:41.273: E/AndroidRuntime(5745): 在 java.lang.reflect。方法。调用(Method.java:511) 12-12 06:11:41.273: E/AndroidRuntime(5745): at 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): at 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): at 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): at 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): at 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 更多

它所要做的就是一个插入语句。

4

1 回答 1

1

“崩溃”是什么样的?发布堆栈跟踪。

此代码在每个级别上都是错误的。您不应该在与数据库交互的方法中以这种方式创建连接。最好在别处创建它(例如从池中获取它)并将其传递给方法。

你不关闭ResultSetStatement。关闭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 回答