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

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

    评论

报告相同问题?

悬赏问题

  • ¥15 求解达问题(有红包)
  • ¥15 请解包一个pak文件
  • ¥15 不同系统编译兼容问题
  • ¥100 三相直流充电模块对数字电源芯片在物理上它必须具备哪些功能和性能?
  • ¥30 数字电源对DSP芯片的具体要求
  • ¥20 antv g6 折线边如何变为钝角
  • ¥30 如何在Matlab或Python中 设置饼图的高度
  • ¥15 nginx中的CORS策略应该如何配置
  • ¥30 信号与系统实验:采样定理分析
  • ¥100 我想找人帮我写Python 的股票分析代码,有意请加mathtao