这是我的代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SQLiteDatabase.openOrCreateDatabase("/gregpeck.db", null);
}
显然,这是在我的主要活动中。
我还向我的主要活动添加了权限:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ie.callanan.dennis.testhw" >
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
我收到的错误消息是:
Failed to open database 'gregpeck.db'.
android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
SQLiteOpenHelper
如果您需要为应用程序提供私有数据库,我建议使用,
public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "DatabaseName";
private static final int DATABASE_VERSION = 1;
private static final String TABLE_CREATE = "CREATE TABLE ....";
public MyDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase database) {
database.execSQL(TABLE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase database,int oldVersion,int newVersion){
// do whatever is required for the upgrade
}
}
在这里,您可以找到完整的示例。如果要从SD卡打开数据库,请使用:
File file = new File("/sdcard/db.sqlite" );
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(file, null);
Log.d("MyApp", "Successfully opened: " + db.isOpen());
对于第一种情况,您不需要任何特定权限。对于第二个,您要做。注意:Android 4.3和4.4确实限制了对SD卡的访问。因此,可能根本无法访问数据库文件(例如,参见本文)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句