2012-12-12 42 views
2

我正在构建一个基本应用程序,让我扫描RFID标签并将数据推送到SQL服务器。我终于找到了被黑掉的NFC部分(第一个Java/Android应用程序),但是在数据库中遇到了问题。我已经完成了搜索,但无法找到答案。我知道直接连接到服务器是一种安全风险和不好的做法,但是这个应用只能安装在一部手机上,并且只能用于演示/测试目的。任何实际的部署都会得到一个Web界面,但现在根本不是一个选项。在Android中直接访问SQL数据库

我使用JTDS 1.3.0驱动程序,和下面的代码片段:

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

此刻,我的问题是,每当我到

Class.forname(driver).newInstance(); 

它啤酒花直接到catch块。我不知道为什么。我已经一行接一行,但发生异常时找不到错误消息,并且不知道它为什么会这样。多谢你们。

编辑:我删除了try/catch块,然后执行它,并从logcat获得分配。不知道是否有帮助,但这里是它给了我:

12-12 05:29:37.369: W/dalvikvm(1242): threadid=1: thread exiting with uncaught exception (group=0x4150a930) 
12-12 05:29:37.389: E/AndroidRuntime(1242): FATAL EXCEPTION: main 
12-12 05:29:37.389: E/AndroidRuntime(1242): java.lang.IllegalStateException: Could not execute method of the activity 
12-12 05:29:37.389: E/AndroidRuntime(1242):  at android.view.View$1.onClick(View.java:3597) 
12-12 05:29:37.389: E/AndroidRuntime(1242):  at android.view.View.performClick(View.java:4202) 
12-12 05:29:37.389: E/AndroidRuntime(1242):  at android.view.View$PerformClick.run(View.java:17340) 
12-12 05:29:37.389: E/AndroidRuntime(1242):  at android.os.Handler.handleCallback(Handler.java:725) 
12-12 05:29:37.389: E/AndroidRuntime(1242):  at android.os.Handler.dispatchMessage(Handler.java:92) 
12-12 05:29:37.389: E/AndroidRuntime(1242):  at android.os.Looper.loop(Looper.java:137) 
12-12 05:29:37.389: E/AndroidRuntime(1242):  at android.app.ActivityThread.main(ActivityThread.java:5039) 
12-12 05:29:37.389: E/AndroidRuntime(1242):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-12 05:29:37.389: E/AndroidRuntime(1242):  at java.lang.reflect.Method.invoke(Method.java:511) 
12-12 05:29:37.389: E/AndroidRuntime(1242):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
12-12 05:29:37.389: E/AndroidRuntime(1242):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
12-12 05:29:37.389: E/AndroidRuntime(1242):  at dalvik.system.NativeStart.main(Native Method) 
12-12 05:29:37.389: E/AndroidRuntime(1242): Caused by: java.lang.reflect.InvocationTargetException 
12-12 05:29:37.389: E/AndroidRuntime(1242):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-12 05:29:37.389: E/AndroidRuntime(1242):  at java.lang.reflect.Method.invoke(Method.java:511) 
12-12 05:29:37.389: E/AndroidRuntime(1242):  at android.view.View$1.onClick(View.java:3592) 
12-12 05:29:37.389: E/AndroidRuntime(1242):  ... 11 more 
12-12 05:29:37.389: E/AndroidRuntime(1242): Caused by: java.lang.ClassNotFoundException: net.sourceforge.jtds.jdbc.Driver 
12-12 05:29:37.389: E/AndroidRuntime(1242):  at java.lang.Class.classForName(Native Method) 
12-12 05:29:37.389: E/AndroidRuntime(1242):  at java.lang.Class.forName(Class.java:217) 
12-12 05:29:37.389: E/AndroidRuntime(1242):  at java.lang.Class.forName(Class.java:172) 
12-12 05:29:37.389: E/AndroidRuntime(1242):  at com.nateapp.finalproject.MainActivity.sendData(MainActivity.java:261) 
12-12 05:29:37.389: E/AndroidRuntime(1242):  ... 14 more 
12-12 05:29:37.389: E/AndroidRuntime(1242): Caused by: java.lang.NoClassDefFoundError: net/sourceforge/jtds/jdbc/Driver 
12-12 05:29:37.389: E/AndroidRuntime(1242):  ... 18 more 
12-12 05:29:37.389: E/AndroidRuntime(1242): Caused by: java.lang.ClassNotFoundException: Didn't find class "net.sourceforge.jtds.jdbc.Driver" on path: /data/app/com.nateapp.finalproject-1.apk 
12-12 05:29:37.389: E/AndroidRuntime(1242):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65) 
12-12 05:29:37.389: E/AndroidRuntime(1242):  at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
12-12 05:29:37.389: E/AndroidRuntime(1242):  at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
12-12 05:29:37.389: E/AndroidRuntime(1242):  ... 18 more 
+0

首先,检查Logcat的错误信息('e.getMessage') –

+0

当logcat出现时唯一发生的是“错误连接”。有没有办法获得更详细的错误信息? – user1789259

+0

我删除了try/catch块,并从logcat获得更多的数据。希望它是相关和有意义的。 – user1789259

回答

1

更多好位搜索后,有人认为它是在1.3.0版中的错误。我只是从我的项目(libs文件夹)中删除了1.3.0版本,并且丢弃了1.2.7版本,现在它工作正常。