龙谷情Sinoam 2018-11-05 00:20 采纳率: 0%
浏览 1303
已结题

SQLite在模拟器6.0不能创建表,db.execSQL()语句没有执行

线上代码:
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();



    }
}

MyOpenHelper.java:

 public class MyOpenHelper extends SQLiteOpenHelper {

    public MyOpenHelper(@Nullable Context context) {
        super(context, "qqwe.db", null, 1);
    }

    @Override
    /**
     *数据库第一次创建的始后调用
     * 那么这个方法特别适合做表结构的初始化
     *此方法在android6.0模拟器不适用,原因待查
     * */
    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上却不能创建表?
求大神指教

  • 写回答

2条回答 默认 最新

  • ziyejinwei1994 2018-11-05 01:12
    关注

    数据库应该需要写入权限,6.0的手机都需要去请求动态权限,去请求下动态权限试试,应该是写入这个权限

    评论

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况