首页 新闻 会员 周边

SQLite不能创建表

0
[已解决问题] 解决于 2020-11-06 15:25

我先上代码:
MainActivity.java:
public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    MyOpenHelper myOpenHelper = new MyOpenHelper(getApplicationContext());
    //创建或打开数据库
    SQLiteDatabase writableDatabase = myOpenHelper.getWritableDatabase();
    //创建或打开数据库,如果磁盘满了,返回只读的数据库
    SQLiteDatabase readableDatabase = myOpenHelper.getReadableDatabase();
}

}

public class MyOpenHelper extends SQLiteOpenHelper {

public MyOpenHelper(@Nullable Context context) {

    super(context, "lgq.db", null, 1);
}

@Override
/**
 *数据库第一次创建的始后调用
 * 那么这个方法特别适合做表结构的初始化
 *
 * */
public void onCreate(SQLiteDatabase db) {
    //id 一般以_id去写

    db.execSQL("create table Student ("
            + "id integer primary key autoincrement," + "name text,"
            + "score real," + "age integer," + "gender text)");
    System.out.println("创建完成");
}

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

}

}

每次运行之前会将数据库删除,语句System.out.println("创建完成");会执行,在Android4.4运行正常,但在6.0上不能创建表,应该是db.execSQL()语句没有执行。
问:为什么在Android4.4上正常运行,但在6.0上却不能创建表?
求大神指教。

龙谷情Sinoam的主页 龙谷情Sinoam | 菜鸟二级 | 园豆:206
提问于:2018-11-02 21:14
< >
分享
最佳答案
0

不清楚你的MyOpenHelper是如何删除数据库的。
一般情况下,虽然你每次运行app,都会执行“new MyOpenHelper(getApplicationContext());”,但第二次时 lgq.db这个数据库文件已经存在,所以不再执行onCreate方法。

奖励园豆:5
威格灵 | 初学一级 |园豆:183 | 2018-12-05 11:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册