我目前正在完成学校作业。我目前在调试应用程序时遇到了创建SQLITE数据库的问题。
logcat的:
E/SQLiteLog﹕ (14) os_unix.c:30046: (2) open(/data/data/com.asus.microfilm/databases/Sugar.db) -
E/SQLiteDatabase﹕ Failed to open database '/data/data/com.asus.microfilm/databases/Sugar.db'.
我想知道为什么打开其他包DB。我在网上搜索了一些例子,我找不到任何解决方案,这就是我决定在这里发布的原因。
此外,我已经使用了 adb-shell ,但我的软件包中没有找到任何内容。
DatabaseHelper.java
public class DatabaseHelper extends SQLiteOpenHelper
{
public DatabaseHelper(Context context)
{
super(context, context.getExternalFilesDir(null).getAbsolutePath() + "/" + DATABASE_NAME, null, DATABASE_VERSION);
}
tab1.java
DatabaseHelper myDb;
myDb = new DatabaseHelper(getActivity());
我的tab1.java是一个片段。
答案 0 :(得分:1)
我的解决方案例如
public class NotesDB extends SQLiteOpenHelper {
private static final String DB_NAME = "NotesFile";
private static final String LOG_TAG = "myLogs";
private static final String TABLE_NAME = "Notes";
private static final String COLUMN_KEY = "key";
private static final String COLUMN_NOTE = "note";
private static final String COLUMN_NAME = "name";
private static final String COLUMN_QUESTION = "question";
private String table = "";
public NotesDB(Context context) {
super(context, DB_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
Log.d(LOG_TAG, "--- onCreate database ---");
db.execSQL("create table "+TABLE_NAME+" ("
+ "id integer primary key autoincrement,"
+ COLUMN_NAME+" text,"
+ COLUMN_KEY+" integer,"
+ COLUMN_QUESTION+" text,"
+ COLUMN_NOTE+" text" + ");");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
用途
SQLiteDatabase db = new NotesDB(getAppContext()).getWritableDatabase();
c=db.query("Notes", null, selection, selectionArgs , null, null, null );................
答案 1 :(得分:1)
试试这个:
public class DatabaseHelper extends SQLiteOpenHelper
{
public DatabaseHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
答案 2 :(得分:0)
SQLiteOpenHelper有两个构造函数:
SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version)
SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler)
您必须实现其中一个,并在onCreate方法中创建表。
答案 3 :(得分:0)
试试这个,让我知道它是否在那里创建了文件
public class DatabaseHelper extends SQLiteOpenHelper
{
public DatabaseHelper(Context context)
{
super(context, context.getExternalFilesDir("MyDatabase") + "/" + DATABASE_NAME, null, DATABASE_VERSION);
}
或者如果想要使用内部存储器,你也可以试试这个,因为它更安全
public class DatabaseHelper extends SQLiteOpenHelper
{
public DatabaseHelper(Context context)
{
super(context, context.getFilesDir() + "/" + DATABASE_NAME, null, DATABASE_VERSION);
}
更新1:尝试使用此
public DatabaseHelper(final Context context) {
super(context, Environment.getExternalStorageDirectory()
+ File.separator + FILE_DIR
+ File.separator + DATABASE_NAME, null, DATABASE_VERSION);
}