开发者

data from Database access error in android

开发者 https://www.devze.com 2023-01-27 04:33 出处:网络
public String[] getdata() { try { myDB = this.openOrCreateDatabase(\"Task\", MODE_PRIVATE, null); Cursor c=myDB.rawQuery(\"SELECT * from \"+TableName+\";\",null);
public String[] getdata()
    {
        try
           {
            myDB = this.openOrCreateDatabase("Task", MODE_PRIVATE, null);

            Cursor c=myDB.rawQuery("SELECT * from "+TableName+";",null);
            c.moveToFirst();


            for(int i=0;i<c.getCount();++i)
            {
                 String str0=c.getString(0);
             System.out.println(str0);
                 arr[i]=str0;

                c.moveToNext();

            }    

           }
           catch(Exception e)
           {
               e.printStackTrace();
           }
           finally
           {
               myDB.close();
           }

           return arr;
    }

this is my function whats wrong in it ..it is showing the apllication has stopped unexpectedly please help.. err is

11-29 14:47:07.443: WARN/SQLiteDirectCursorDriver(716): Found SQL string that ends in ; -- SELECT * from Task;
11-29 14:47:07.453: INFO/System.out(716): ghgf
11-29 14:47:07.453: INFO/System.out(716): ghgf
11-29 14:47:07.453: INFO/System.out(716): ghgf
11-29 14:47:07.463: INFO/System.out(716): ghgf
11-29 14:47:07.463: INFO/System.out(716): ghgf
11-29 14:47:07.744: DEBUG/AndroidRuntime(716): Shutting down VM
11-29 14:47:07.744: WARN/dalvikvm(716): threadid=3: thread exiting with uncaught exception (group=0x4001aa28)
11-29 14:47:07.754: ERROR/AndroidRuntime(716): Uncaught handler: thread main exiting due to uncaught exception
11-29 14:47:开发者_开发百科07.773: ERROR/AndroidRuntime(716): java.lang.NullPointerException
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at android.widget.AbsListView.obtainView(AbsListView.java:1273)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at android.widget.ListView.makeAndAddView(ListView.java:1658)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at android.widget.ListView.fillDown(ListView.java:637)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at android.widget.ListView.fillFromTop(ListView.java:694)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at android.widget.ListView.layoutChildren(ListView.java:1516)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at android.widget.AbsListView.onLayout(AbsListView.java:1112)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at android.view.View.layout(View.java:6569)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at android.view.View.layout(View.java:6569)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:998)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at android.widget.LinearLayout.onLayout(LinearLayout.java:918)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at android.view.View.layout(View.java:6569)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at android.view.View.layout(View.java:6569)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at android.view.ViewRoot.performTraversals(ViewRoot.java:979)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1613)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at android.os.Looper.loop(Looper.java:123)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at android.app.ActivityThread.main(ActivityThread.java:4203)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at java.lang.reflect.Method.invokeNative(Native Method)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at java.lang.reflect.Method.invoke(Method.java:521)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
11-29 14:47:07.773: ERROR/AndroidRuntime(716):     at dalvik.system.NativeStart.main(Native Method)
11-29 14:47:07.793: INFO/Process(63): Sending signal. PID: 716 SIG: 3


Try to re-write the part where you loop over the result set like this and see if that makes it any better:

Cursor c = myDB.rawQuery("SELECT * FROM " + TableName, null);
if (c.moveToFirst())
{
    arr = new String[c.getCount()];
    int i = 0;
    do
    {
        String str0 = c.getString(0);
        System.out.println(str0);
        arr[i] = str0;
        i++;
    }
    while (c.moveToNext());
}


http://www.netmite.com/android/mydroid/donut/frameworks/base/core/java/android/database/sqlite/SQLiteDirectCursorDriver.java

http://www.netmite.com/android/mydroid/donut/frameworks/base/core/java/android/database/sqlite/SQLiteDirectCursorDriver.java

public  [More ...] SQLiteDirectCursorDriver(SQLiteDatabase db, String sql, String editTable) {
        mDatabase = db;
        mEditTable = editTable;
        **//TODO remove all callers that end in ; and remove this check**
        if (sql.charAt(sql.length() - 1) == ';') {
            **Log.w(TAG, "Found SQL string that ends in ; -- " + sql);**
            sql = sql.substring(0, sql.length() - 1);
        }
        mSql = sql;
    }

Above code show us, some low version SQLiteDirectCursorDriver implement check SQL that end with ';'. So i suggest remove sql end ';' for compatibility.

0

精彩评论

暂无评论...
验证码 换一张
取 消