Android SQLite запрос не работает - PullRequest
       10

Android SQLite запрос не работает

0 голосов
/ 12 августа 2011

Я построил этот класс DBmanager для удобства, но метод getAllRows () вызывает суету вокруг исключений nullpointerexceptions. Я просто хочу использовать его, чтобы получить все строки без какой-либо фильтрации. Что я делаю не так?

    package com.com.com;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DBManager {

    private SQLiteDatabase db; // a reference to the database manager class.
    private final String DB_NAME = "calls.db"; // the name of our database
    private final int DB_VERSION = 1; // the version of the database

    // the names for our database columns
    private final String TABLE_NAME = "calls";
    private final String TABLE_ROW_ID = "id";
    public final String TABLE_ROW_ONE = "number";
    public final String TABLE_ROW_TWO = "date";

    public void addRow(String rowStringOne, String rowStringTwo){
        // this is a key value pair holder used by android's SQLite functions
        ContentValues values = new ContentValues();

        // this is how you add a value to a ContentValues object
        // we are passing in a key string and a value string each time
        values.put(TABLE_ROW_ONE, rowStringOne);
        values.put(TABLE_ROW_TWO, rowStringTwo);

        // ask the database object to insert the new data 
        try
        {
            db.insert(TABLE_NAME, null, values);
        }
        catch(Exception e)
        {
            Log.e("DB ERROR", e.toString()); // prints the error message to the log
            e.printStackTrace(); // prints the stack trace to the log
        }
    }

    public Cursor getAllRows(){
        Cursor cursor = db.query(TABLE_NAME, null, null, null, null, null, null, null);
        //Cursor cursor = db.query(TABLE_NAME, new String[] { TABLE_ROW_ID, TABLE_ROW_ONE, TABLE_ROW_TWO }, null, null, null, null, null);
        return cursor;
    }

    /*
     * SQLiteHelper Class
     */
    private class CustomHelper extends SQLiteOpenHelper{

        public CustomHelper(Context context){
            super(context, DB_NAME, null, DB_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db){
            // the SQLite query string that will create our 3 column database table.
            String newTableQueryString =    
                    "create table " +
                            TABLE_NAME +
                            " (" +
                            TABLE_ROW_ID + " integer primary key autoincrement not null," +
                            TABLE_ROW_ONE + " text," +
                            TABLE_ROW_TWO + " text" +
                            ");";

            // execute the query string to the database.
            db.execSQL(newTableQueryString);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
            // NOTHING TO DO HERE. THIS IS THE ORIGINAL DATABASE VERSION.
            // OTHERWISE, YOU WOULD SPECIFIY HOW TO UPGRADE THE DATABASE
            // FROM OLDER VERSIONS.
        }

    }

}

Ответы [ 3 ]

2 голосов
/ 12 августа 2011

Ну, «суета по поводу нулевых исключений» вряд ли является подробным описанием вашей проблемы. Размещение трассировки стека поможет. В вашем случае вы не инициализируете переменную db. Вам нужно позвонить getWritableDatabase(), чтобы сделать это.

1 голос
/ 12 августа 2011

Исключения нулевого указателя являются ключом здесь.db создан?Или инициализированы в этом отношении?

0 голосов
/ 17 октября 2011

Возможно, это мелочь, но я заметил, что на private final String TABLE_ROW_ID = "id" ваш идентификатор не начинается с подчеркивания. Я уверен, что для Android это должно быть _id. Просто мои два цента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...