ClassNotFoundException - 连接到MSSQL数据库

时间:2012-10-25 17:24:31

标签: android sql-server classnotfoundexception

我想将我的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):at java.lang.Class.classForName(Native Method)   10-25 19:17:00.556:W / System.err(18961):at java.lang.Class.forName(Class.java:217)   10-25 19:17:00.556:W / System.err(18961):at java.lang.Class.forName(Class.java:172)   10-25 19:17:00.556:W / System.err(18961):at 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):at java.lang.reflect.Method.invokeNative(Native Method)   10-25 19:17:00.566:W / System.err(18961):at java.lang.reflect.Method.invoke(Method.java:511)   10-25 19:17:00.566:W / System.err(18961):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:789)   10-25 19:17:00.566:W / System.err(18961):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)   10-25 19:17:00.566:W / System.err(18961):at 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):at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)   10-25 19:17:00.576:W / System.err(18961):at java.lang.ClassLoader.loadClass(ClassLoader.java:501)   10-25 19:17:00.576:W / System.err(18961):at java.lang.ClassLoader.loadClass(ClassLoader.java:461)   10-25 19:17:00.576:W / System.err(18961):... 18 more

我的代码:

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();
    }
}

}

我做错了什么?

1 个答案:

答案 0 :(得分:0)

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

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

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