龙谷情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的手机都需要去请求动态权限,去请求下动态权限试试,应该是写入这个权限

    评论

报告相同问题?

悬赏问题

  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常
  • ¥15 关于风控系统,如何去选择