使用onCreate()方法首次加载ContentValues后,Android SQLite为空

时间:2016-07-30 18:36:15

标签: java android database sqlite insert

我是Android开发的新手,所以代码还没有完成......

当我在contentValues方法中使用onCreate()创建我的数据库并插入一些项目但在应用程序运行后,我尝试读取我的数据库但它是空的。 这是第一次启动我的应用程序,因此它将使用onCreate()方法,但遗憾的是不插入。

这是我的代码......

package com.example.axel.spotopia;

    import android.content.ContentValues;
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;

    import java.security.PublicKey;



    public class SpotopiaDBHelper extends SQLiteOpenHelper {
        private static final String DB_NAME = "spotopia";
        private static final int DB_VESION = 1;

        public SpotopiaDBHelper(Context context) {
            super(context, DB_NAME, null, DB_VESION);
        }

        @Override
        public void onCreate(SQLiteDatabase db)
        {
            updateMyDB(db, 0, DB_VESION);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
        {
            updateMyDB(db, oldVersion, newVersion);
        }

        private void insertSpot(SQLiteDatabase db, String name, String address, String note, String rank) {
            ContentValues content = new ContentValues();
            content.put("NAME", name);
            content.put("ADDRESS", address);
            content.put("NOTE", note);
            content.put("RANK", rank);
            db.insert(DB_NAME, null, content);
        }

        private void updateMyDB(SQLiteDatabase db, int oldVersion, int newVersion)
        {
            if (oldVersion < 1) {
                db.execSQL("CREATE TABLE SPOT  ("
                        + "_id INTEGER PRIMARY KEY AUTOINCREMENT, "
                        + "NAME TEXT, "
                        + "ADDRESS TEXT, "
                        + "NOTE TEXT, "
                        + "RANK REAL);");
                insertSpot(db, "jaz", null, null, "8");
                insertSpot(db, "jaz1", null, null, "9");
                insertSpot(db, "jaz2", null, null, "10");
            }

        }
    }

1 个答案:

答案 0 :(得分:1)

下面:

db.insert(DB_NAME, null, content);

第一个参数应该是表名...而不是数据库名。那么,请你用下面的代码测试一下吗?

private void insertSpot(SQLiteDatabase db, String name, String address, String note, String rank) {
    ContentValues content = new ContentValues();
    content.put("NAME", name);
    content.put("ADDRESS", address);
    content.put("NOTE", note);
    content.put("RANK", rank);
    db.insert("SPOT", null, content);
}