【问题标题】:ClassNotFoundException - connectiong to MSSQL DatabaseClassNotFoundException - 连接到 MSSQL 数据库
【发布时间】:2012-10-15 22:52:07
【问题描述】:

我想将我的 android 应用程序连接到我的 MSSQL 数据库。 不幸的是,有一个问题:/

10-25 19:17:00.536: W/System.err(18961): java.lang.ClassNotFoundException: net.sourceforge.jtds.jdbc.Driver 10-25 19:17:00.546: W/System.err(18961): 在 java.lang.Class.classForName(Native Method) 10-25 19:17:00.556: W/System.err(18961): 在 java.lang.Class.forName(Class.java:217) 10-25 19:17:00.556: W/System.err(18961): 在 java.lang.Class.forName(Class.java:172) 10-25 19:17:00.556: W/System.err(18961): 在 com.example.mssqlcon.MainActivity.onCreate(MainActivity.java:21) 10-25 19:17:00.556: W/System.err(18961): 在 android.app.Activity.performCreate(Activity.java:4465) 10-25 19:17:00.556: W/System.err(18961): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 10-25 19:17:00.556: W/System.err(18961): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2033) 10-25 19:17:00.556: W/System.err(18961): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104) 10-25 19:17:00.556: W/System.err(18961): 在 android.app.ActivityThread.access$600(ActivityThread.java:132) 10-25 19:17:00.556: W/System.err(18961): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1157) 10-25 19:17:00.556: W/System.err(18961): 在 android.os.Handler.dispatchMessage(Handler.java:99) 10-25 19:17:00.556: W/System.err(18961): 在 android.os.Looper.loop(Looper.java:137) 10-25 19:17:00.566: W/System.err(18961): 在 android.app.ActivityThread.main(ActivityThread.java:4575) 10-25 19:17:00.566: W/System.err(18961): 在 java.lang.reflect.Method.invokeNative(Native Method) 10-25 19:17:00.566: W/System.err(18961): 在 java.lang.reflect.Method.invoke(Method.java:511) 10-25 19:17:00.566: W/System.err(18961): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 10-25 19:17:00.566: W/System.err(18961): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 10-25 19:17:00.566: W/System.err(18961): 在 dalvik.system.NativeStart.main(Native Method) 10-25 19:17:00.566: W/System.err(18961): 由: java.lang.NoClassDefFoundError: net/sourceforge/jtds/jdbc/Driver 10-25 19:17:00.566: W/System.err(18961): ... 18 更多 10-25 19:17:00.566: W/System.err(18961): 引起: java.lang.ClassNotFoundException: net.sourceforge.jtds.jdbc.Driver 10-25 19:17:00.576: W/System.err(18961): 在 dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 10-25 19:17:00.576: W/System.err(18961): 在 java.lang.ClassLoader.loadClass(ClassLoader.java:501) 10-25 19:17:00.576: W/System.err(18961): 在 java.lang.ClassLoader.loadClass(ClassLoader.java:461) 10-25 19:17:00.576: W/System.err(18961): ... 18 更多

我的代码:

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    try {
        Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();

        Connection connection = DriverManager.getConnection(
                "jdbc:jtds:sqlserver://ip_of_my_database", "*****", "*******");
        Statement statement = connection.createStatement();
        //ResultSet result = statement
        //      .executeQuery("SELECT * FROM nazwatabeli");
        ResultSet result = statement.executeQuery("SELECT * FROM name");
        if(result.first()){
            do{
                Log.v("MainActivity", "Name: "+result.getString(result.getRow()));
            } while(result.next());

        }
    } catch (Exception e){
        e.printStackTrace();
    }
}

}

我做错了什么?

【问题讨论】:

    标签: android sql-server classnotfoundexception


    【解决方案1】:

    您无法使用 Android 设备直接访问 SQL Server。您必须使用一种网络服务来访问连接了 SQL 的服务器。您可以使用 java 或 php 来执行此操作。检查以下链接以获取带有 android 的 java webservices。

    http://sarangasl.blogspot.com/2011/10/android-web-service-access-tutorial.html

    您使用的 SDK 版本是什么?如果它是 r20 或更高版本,则必须在整个项目中包含所有用于项目内部 lib 文件夹的外部库文件。否则它会告诉 ClassNotFoundException。 如果您需要任何澄清,请告诉我。

    【讨论】:

    • r20?这是API级别?我的 API 等级是 8。
    • 真的无法访问我的 MSSQL 数据库吗?
    • 这与 API 无关。它是 SDK 版本。您可以通过打开 Android SDK 来查看它,关于选项会在工具下拉菜单中告诉您正在使用的 SDK 版本。
    • 这不是访问外部数据库的方法。您必须使用像 apachy tomcat(用于 java)这样的服务器并在其中创建一个 web 服务。我提供的链接包括它的所有基础知识。在 web 服务中,您可以使用 SQL 的数据库连接代码。如果你想使用内部存储,请使用 SQLite。
    猜你喜欢
    • 2011-06-23
    • 1970-01-01
    • 2013-03-15
    • 2020-03-07
    • 2019-04-24
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多