有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在数据库中保存java GCM消息时出错

我试图将gcm消息保存在数据库中,但每次我发送消息时,应用程序都会关闭

这是我的gcminentservice OnMessage方法:

   protected void onMessage(Context context, Intent intent) {

             Log.i(TAG, "Received message");


    String message = intent.getExtras().getString("Memo");

         displayMessage(context, message);
         MemoDBAdapterHandler db = new MemoDBAdapterHandler(context);
         db.saveMessage(message);
             generateNotification(context, message);
     }

这里是MemoDBAdapterHandler

公共类MemoDBAdapterHandler{

public static final String KEY_BODY = "Body";
public static final String KEY_ROWID ="_id1";

private static final String TAG = "MemoDBAdapterHandler";
private DatabaseHelper mDbHelper;
private SQLiteDatabase mDb;



/** CreateMemoDatabase **/
private static final String DATABASE_CREATE =
        "create table memosTable1 (KEY_BODY integer primary key autoincrement, "
        + "Body string not null);";





private static final int DATABASE_VERSION = 2;
private static final String DATABASE_NAME = "GCM2";
private static final String DATABASE_TABLE = "memosTable1";


private final Context mCtx;

private static class DatabaseHelper extends SQLiteOpenHelper {

    DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        db.execSQL(DATABASE_CREATE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                + newVersion + ", which will destroy all old data");
        db.execSQL("DROP TABLE IF EXISTS memosTable");
        onCreate(db);
    }
}   


public MemoDBAdapterHandler(Context ctx)
{
    this.mCtx = ctx;

}
public MemoDBAdapterHandler open() throws SQLException {
    mDbHelper = new DatabaseHelper(mCtx);
    mDb = mDbHelper.getWritableDatabase();
    return this;
}

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




public long saveMessage(String msg)
{

       //SQLiteDatabase db = getWritableDatabase();

        ContentValues cv = new ContentValues();

        cv.put(KEY_BODY, msg);

        //mDb.close();
         return mDb.insert(DATABASE_TABLE, null, cv);

}


共 (1) 个答案

  1. # 1 楼答案

    用下面的代码更新你的代码

    private static final String DATABASE_CREATE =
            "create table memosTable1 (KEY_ROWID integer primary key autoincrement, "
            + "Body string not null);";
    

    您给了相同的列名