我可以在数据库目录中创建文件吗?

时间:2011-09-11 08:38:05

标签: android

我需要在运行时创建数据库目录(/ data / data / pkg-name / databases /)中的数据库文件。我的问题是:有可能吗?

如果我尝试用以下方法创建它:

File unzipped = new File(context.getDatabasePath(filename + ".db").getPath());
unzipped.createNewFile();

该应用程序出错:...没有这样的文件或目录......

有些想法我怎么能这样做?

  

我从互联网上下载了我需要创建的数据库,这就是问题所在。

2 个答案:

答案 0 :(得分:0)

  

有些想法我怎么能这样做?

创建目录。在尝试使用SQLiteDatabaseSQLiteOpenHelper创建第一个数据库之前,Android不会自动创建目录。

答案 1 :(得分:0)

你必须检查:

  1. 目录存在,如果没有创建它。
  2. 文件存在,如果没有创建它。
  3. 但是如果你真的想要创建一个sqlite数据库,有更好的方法来做到这一点

    private static class OpenHelper extends SQLiteOpenHelper {
            OpenHelper(Context context) {
                super(context, DATABASE_NAME, null, DATABASE_VERSION);
            }
        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL("CREATE TABLE " + TABLE_NAME
                    + "(_id INTEGER PRIMARY KEY, name TEXT)");
        }
    
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    
            while (oldVersion != newVersion) {
                Log.w("Example",
                        "Upgrading database, this will drop tables and recreate.");
                if (oldVersion == 4) {
                    db.execSQL("ALTER TABLE " + TABLE_NAME+ " ADD COLUMN type INTEGER");
    
                }
                else if(oldVersion>=5)
                {
                    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
                    onCreate(db);
                }
                oldVersion++;
            }
        }
    }