Java 无错误(代码0):无法在读/写模式下打开数据库。引发错误
我使用android应用程序创建了一个sqlite数据库,并将其存储在外部磁盘中。数据库名称为sensor.sqlite,文件路径为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):引发无法在读/写模式下打开数据库 我读过相关的帖子 但
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" />