还是无法创建,helper报了错

还是无法创建,helper报了错

package com.zpk.sqlactivity;

import android.Manifest;
import android.content.pm.PackageManager;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Environment;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       int permission = ContextCompat.checkSelfPermission(this,Manifest.permission.WRITE_CONTACTS);
       if (permission!=PackageManager.PERMISSION_GRANTED){
           ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_CONTACTS,
           Manifest.permission.MOUNT_FORMAT_FILESYSTEMS},1);
       }
       String path = Environment.getRootDirectory()+ "/student1.db";
       SQLiteOpenHelper helper = new SQLiteOpenHelper(this,path,null,1) {
           @Override
           public void onCreate(SQLiteDatabase sqLiteDatabase) {
               //创建
               Toast.makeText(MainActivity.this,"数据库创建",Toast.LENGTH_SHORT).show();
           }

           @Override
           public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
               //升级
               Toast.makeText(MainActivity.this,"数据库升级",Toast.LENGTH_SHORT).show();
           }
       };
       //用于获取数据库对象
       helper.getReadableDatabase();
   }


   public void operate(View v){
       switch (v.getId()){
           case R.id.insert_btn:

               break;
           case R.id.select_btn:
               break;
           case R.id.delete_btn:
               break;
           case R.id.update_btn:
               break;
       }
   }
}

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕雪 2019-08-12 10:30:59

那不行噢,如果没有SD卡,就不能放Environment中。你可以只给一个数据库的名字,那么这时它会存放在私有目录的。祝:学习愉快

irista23 2019-08-04 11:03:15

你这里获取的是系统目录,这里应该操作的是sd卡的目录,改成Environment.getExternalStorageDirectory()

http://img1.sycdn.imooc.com//climg/5d464aac00014d1c12920494.jpg

  • 提问者 艾姆克ddd #1
    因为我没有sd卡的目录,所以想获取的是系统目录
    2019-08-11 15:46:54
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.Android 网络操作与流行框架
  • 参与学习           人
  • 提交作业       220    份
  • 解答问题       1800    个

本阶段是联网及数据处理的必备技能。课程从网络基础知识到线程间协同工作、异步下载处理;从文件存储、到轻量级数据库SQLite的使用;最后利用最流程的第三方框架助你快速开发企业级APP。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师