2016-10-26 16 views
-1

ここでは、プロジェクトで頻繁に使用されるデータベースカーソルの機能を作成しています。ここでSQLiteでデータベーステーブルが表示されない

は、DALの私のコードです:

public Cursor SelectQuery(String table){ 
    Cursor cursor=SQLiteDb.query(table,null,null,null,null,null,null,null); 
    return cursor; 
} 

SQLiteDBがmainactivityにヌルを取得しているデバッグでは。

コード:

Cursor c=dal.SelectQuery(ConstantsValues.TabData); 
Log.e("hello111",""+c.getCount()); 

ので、合計行を取得するようにしかし、テーブルはcoming.Here ConstantsValues.TabDataは、テーブル名を持っているではありません。
のはここのコードのように:

public ArrayList AllSelectQryForTabEmpData1() { 
    ArrayList<Employee> data = new ArrayList(); 

    Cursor cursor = SQLiteDb.query(ConstantsValues.TabData, null, null, null, null, null, null, null); 
    while (cursor.moveToNext()) { 
    String id = cursor.getString(cursor.getColumnIndex(ConstantsValues.ID)); 
    String name = cursor.getString(cursor.getColumnIndex(ConstantsValues.NAME)); 
    String value= cursor.getString(cursor.getColumnIndex(ConstantsValues.VALUE)); 

    data.add(new Employee(id, name,value)); 
    } 
    cursor.close(); 
    return data; 
} 

ここでは、オープンとクローズのコードです:

public void OpenDB() { 
    SQLiteDb = new DBHelper(context).getWritableDatabase(); 
} 

public void CloseDB() { 
    if (SQLiteDb.isOpen()) { 
    SQLiteDb.close(); 
    } 
} 

私はSQLiteDbで表を取得しています。 Cursorの作成に何か問題があるようです。簡単な修正のために

// Create and/or open the database for writing 
SQLiteDatabase db = getWritableDatabase(); 

UPDATE:あなたはSQLiteDatabaseまず、このような何かをインスタンス化する必要が

E/AndroidRuntime: FATAL EXCEPTION: main 
                      Process: com.example.abhishek.httpclient, PID: 12538 
                      java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.abhishek.httpclient/com.example.abhishek.httpclient.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.Cursor android.database.sqlite.SQLiteDatabase.query(java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String)' on a null object reference 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2671) 
                       at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1501) 
                       at android.os.Handler.dispatchMessage(Handler.java:111) 
                       at android.os.Looper.loop(Looper.java:207) 
                       at android.app.ActivityThread.main(ActivityThread.java:5769) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:681) 
                       Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.Cursor android.database.sqlite.SQLiteDatabase.query(java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String)' on a null object reference 
                       at com.example.abhishek.httpclient.DAL.SelectQuery(DAL.java:141) 
                       at com.example.abhishek.httpclient.MainActivity.onCreate(MainActivity.java:92) 
                       at android.app.Activity.performCreate(Activity.java:6317) 
                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1136) 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2532) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2671) 
                       at android.app.ActivityThread.-wrap11(ActivityThread.java) 
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1501) 
                       at android.os.Handler.dispatchMessage(Handler.java:111) 
                       at android.os.Looper.loop(Looper.java:207) 
                       at android.app.ActivityThread.main(ActivityThread.java:5769) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:681) 
+1

あなたのlogcatを投稿 –

+0

編集した...私の質問 – Abhi

+0

'SQLiteDb'はとても適切 –

答えて

2

:このような何か、あなたがSQLiteDbを使用するたびにそれを呼び出す

public void openDB() { 
    if(sqliteDB == null) { 
    sqliteDB= new DBHelper(context).getWritableDatabase(); 
    } else { 
    if(!sqliteDB.isOpen(){ 
     // reopen again. 
     // NOTE: This should be changed to the method which you use to open the db. 
     sqliteDB= new DBHelper(context).getWritableDatabase(); 
    } 
    } 
} 

その後:方法(:テストされていないノート)へ。このチュートリアルのDBHelper.javaクラスに従ってください。どのようにデータベース接続を行ったのですか? getWritableDatabaseを(使用することにより https://www.tutorialspoint.com/android/android_sqlite_database.htm

SQLiteDatabase db = this.getWritableDatabase(); 

)、あなたはあなたのDBへの読み取りと書き込みの両方の操作を行うための力を持っています。

+0

AllSelectQryForTabEmpData1()のうまくいっている他のコード.....しかし、これはまだ私は – Abhi

+0

しようと思います。それらのコードスニペットは、2つの異なるJavaクラスから取得されます。 1つは接続を作成したが、他の接続は作成していない可能性があります。 @Abhi – minhazur

+0

はい、私は他のJavaクラスでこれを初期化しました... ** arr_emp ** = ban.AllSelectQryForTabEmpData1(); – Abhi

3

:ここ

は私のlogcatです、あなたはあなたの変更することができます私は、データベース接続に問題があると思い

openDB(); 
Cursor cursor = SQLiteDb.query(ConstantsValues.TabData, null, null, 
           null, null, null, null, null); 
... 
関連する問題