0

データベースに「単語」を追加できるメソッドを作成しました。addWord()メソッドを呼び出すと、database.insert()を試行すると、Nullポインター例外がスローされます。

public class DatabaseControl {

// columns for table
public static final String KEY_ROWID = "_id";
public static final String KEY_SYNID = "synsetID";
public static final String KEY_WORD = "synsetID";
public static final String KEY_DESCRIPTION = "description";
public static final String KEY_POPULARITY = "popularity";

// table name
public static final String DATABASE_TABLE = "wordnet"; // Name of the Database

private Context context;
private SQLiteDatabase database;
private DatabaseHelper dbHelper;

public DatabaseControl(Context context){
    this.context = context;
}

public DatabaseControl open() throws SQLiteException {
    dbHelper = new DatabaseHelper(context);
    database = dbHelper.getWritableDatabase();
    return this;
}

public void close(){
    dbHelper.close();
}

public long addWord (String synId, String word, String description, int popularity) {
    ContentValues setUpVals = createContentValues(synId, word, description, popularity);
    // SEEMS TO THROW NULL POINTER EXCEPTION
    return database.insert(DATABASE_TABLE, null , setUpVals); 
}

私はここでこのメソッドを呼び出します:

private void populateDatabase(){
    try {
         long rowId = 0;
         rowId = dbControl.addWord("testSyn","","",1); // Add a row to the database for test
    } 
    catch (SQLiteException e){
      e.printStackTrace();
    }

なぜこのエラーがスローされるのか本当に理解できません。また、insert()内の2番目のパラメーターを完全に理解していないので、私が知っているすべての人にとってそれである可能性があります:/

4

1 に答える 1

0

この方法を試してください:

private void populateDatabase()
{    
    try {
        long rowId = 0;         
        rowId = dbControl.addWord("testSyn",null,null,1); 
    } 
    catch (SQLiteException e){
        e.printStackTrace();
    }
于 2012-12-23T08:25:07.773 に答える