首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQLiteDatabase安卓系统中增加表数时清除模拟器数据的必要性

在SQLiteDatabase安卓系统中增加表数时清除模拟器数据的必要性
EN

Stack Overflow用户
提问于 2015-01-09 13:51:22
回答 1查看 27关注 0票数 0

我有一个小小的疑问,我没有得到满意的答案。以下是场景:

当我增加已经存在的数据库中的表数时,我在OpenHelper类的onCreate方法中得到了一个NPE,但是当我在清除模拟器数据之后运行相同的应用程序时,一切似乎都奇迹般地运行得很好……

我不知道为什么会发生这种情况,任何解释都会有帮助...

代码语言:javascript
复制
public static final String DATABASE_NAME = "MONEY_DATABASE";
public static final String TABLE_NAME = "MONEY_TABLE";
public static final String TABLE_FIELDS = "FIELD_TABLE";

public static final int DATABASE_VERSION = 4;

public static final String KEY_ID = "_id";
public static final String KEY_AMOUNT = "amount";
public static final String KEY_DATE = "date_int";

public static final String KEY_TYPE_ID = "type_id";
public static final String KEY_TYPE = "type";
public static final String KEY_TITLE = "field_title";

Context localContext;

public HelperMethods (Context c)
{
    Log.d("dev","HelperMethods object created");
    this.localContext = c;
    localopenhelper = new OpenHelper(localContext);

    if(localContext == null)
    {
        Log.d("dev","localContext is null");
    }

}


public SQLiteDatabase database ;

class OpenHelper extends SQLiteOpenHelper
{
    // CREATE TABLE MONEY_TABLE ( _id INTEGER PRIMARY KEY AUTOINCREMENT, amount DOUBLE);

    private String query = "CREATE TABLE " + TABLE_NAME + " ( " + KEY_ID +  " INTEGER PRIMARY KEY AUTOINCREMENT, "
            + KEY_AMOUNT + " DOUBLE, " + KEY_DATE + " DOUBLE);";

    private String query1 = "CREATE TABLE " + TABLE_FIELDS + " ( " + KEY_TYPE_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
           + KEY_TYPE + " TEXT NOT NULL, " + KEY_TITLE + " TEXT NOT NULL);";

    Context helperContext;

    public OpenHelper(Context context)
    {
        super(context, DATABASE_NAME, null , DATABASE_VERSION);

        this.helperContext = context;

    }

    @Override
    public void onCreate(SQLiteDatabase db)
    {
        // NPE occurs exactly at this line..
        db.execSQL(query);

        db.execSQL(query1);
    }

还有关于LogCat的东西:

代码语言:javascript
复制
Process: com.giridharkarnik.moneymanager, PID: 1149
java.lang.NullPointerException
        at com.giridharkarnik.moneymanager.HelperMethods$OpenHelper.onCreate(HelperMethods.java:77)
        at com.giridharkarnik.moneymanager.HelperMethods$OpenHelper.onUpgrade(HelperMethods.java:88)
EN

回答 1

Stack Overflow用户

发布于 2015-01-09 15:25:42

从堆栈跟踪可以看出,您的onUpgrade()包含如下内容:

代码语言:javascript
复制
onCreate(null);

您还需要将获得的数据库作为参数传递给onCreate()onUpgrade()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27854602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档