Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无错误(代码0):无法在读/写模式下打开数据库。引发错误_Java_Android_Sql_Sqlite - Fatal编程技术网

Java 无错误(代码0):无法在读/写模式下打开数据库。引发错误

Java 无错误(代码0):无法在读/写模式下打开数据库。引发错误,java,android,sql,sqlite,Java,Android,Sql,Sqlite,我使用android应用程序创建了一个sqlite数据库,并将其存储在外部磁盘中。数据库名称为sensor.sqlite,文件路径为 Environment.getExternalStorageDirectory()+ File.separator + "data" + File.separator +"sensor.sqlite" 但是在这行代码中 this.getWritableDatabase(); 异常->非错误(代码0):引发无法在读/写模式下打开数据库 我读过相关的帖子 但

我使用android应用程序创建了一个sqlite数据库,并将其存储在外部磁盘中。数据库名称为sensor.sqlite,文件路径为

Environment.getExternalStorageDirectory()+ File.separator + "data" + File.separator +"sensor.sqlite"
但是在这行代码中

 this.getWritableDatabase();
异常->非错误(代码0):引发无法在读/写模式下打开数据库

我读过相关的帖子

但我还没有找到答案

你知道吗?多谢各位

问候,, 吉米

这是我的android清单文件

<?xml version="1.0" encoding="utf-8"?>


这是我的密码

public SqlController(Context context) {
    super(context,
            Environment.getExternalStorageDirectory() + File.separator + "data" + File.separator +
                    "sensor.sqlite"
            , null, 1);

}

@Override
public void onCreate(SQLiteDatabase database) {


    String x = "CREATE TABLE [sport] ([id] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,";
    x += " [accx] REAL,";
    x += " [accy] REAL,";
    x += " [accz] REAL,";
    x += " [geox] REAL,";
    x += " [geoy] REAL,";
    x += " [geoz] REAL,";
    x += " [activity] TEXT,";
    x += " [datetime] TIMESTAMP)";

    try {
        database.execSQL(x);
    } catch (Exception ex) {
        System.err.println(ex);
    }
}

@Override
public void onUpgrade(SQLiteDatabase database, int version_old, int current_version) {
    database.execSQL("drop table if exists sport");
    onCreate(database);
}

public void insert(HashMap<String, String> queryValues) {
    SQLiteDatabase database = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put("accx", queryValues.get("accx"));
    values.put("accy", queryValues.get("accy"));
    values.put("accz", queryValues.get("accz"));
    values.put("geox", queryValues.get("geox"));
    values.put("geoy", queryValues.get("geoy"));
    values.put("geoz", queryValues.get("geoz"));
    values.put("activity", queryValues.get("activity"));
    values.put("datetime", new Date().toString());
    database.insert("sport", null, values);
    database.close();
}
公共SqlController(上下文){ 超级(上下文, Environment.getExternalStorageDirectory()+File.separator+“data”+File.separator+ “sensor.sqlite” ,空,1); } @凌驾 public void onCreate(SQLiteDatabase){ String x=“创建表[sport]([id]整型主键自动递增非空,”; x+=“[accx]实值”; x+=“[accy]实际值”; x+=“[accz]真实值”; x+=“[geox]真实”; x+=“[geoy]REAL,”; x+=“[geoz]真实”; x+=“[活动]文本”; x+=“[datetime]时间戳)”; 试一试{ execSQL(x); }捕获(例外情况除外){ 系统错误打印项次(ex); } } @凌驾 public void onUpgrade(SQLiteDatabase数据库,int-version\u-old,int-current\u-version){ execSQL(“如果存在,则删除表”); onCreate(数据库); } 公共void插入(HashMap查询值){ SQLiteDatabase=this.getWritableDatabase(); ContentValues=新的ContentValues(); value.put(“accx”),queryvalue.get(“accx”); value.put(“accy”),queryvalue.get(“accy”); value.put(“accz”),queryvalue.get(“accz”); value.put(“geox”,queryvalue.get(“geox”); value.put(“geoy”),queryvalue.get(“geoy”); value.put(“geoz”),queryvalue.get(“geoz”); value.put(“活动”),queryvalue.get(“活动”); value.put(“datetime”,new Date().toString()); 数据库。插入(“运动”,空,值); close()数据库; }
是否添加读/写
文件权限

在AndroidManifest中添加权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


请添加更多代码以检查发生了什么@jimmylei已更新我的问题并包含我的android清单文件。您仅使用
SQLiteDatabase=this.getWritableDatabase()用于插入,这行有必要吗?是的,我想插入一条记录。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />