H5W3
当前位置:H5W3 > 问答 > 正文

SQLite不能创建表

我先上代码:
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上却不能创建表?
求大神指教。

回答

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

本文地址:H5W3 » SQLite不能创建表

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址