2014-05-17 56 views
1

所以我已经尝试了几个例子,但迄今为止,我一直无法找到任何可以提供任何知识的源代码,无论我是否可以保存我的sqlite数据库在例如在“/系统”文件夹中的设备的内部存储器中的任何其他文件夹,我知道,它可以通过简单地做以下保存在Android内存中的SQLite数据库

public class DatabaseHandler extends SQLiteOpenHelper { 

    // All Static variables 
    // Database Version 
    private static final int DATABASE_VERSION = 1; 

    // Database Name 
    private static final String DATABASE_NAME = "contactsManager"; 

    // Contacts table name 
    private static final String TABLE_CONTACTS = "contacts"; 

    // Contacts Table Columns names 
    private static final String KEY_ID = "id"; 
    private static final String KEY_NAME = "name"; 
    private static final String KEY_PH_NO = "phone_number"; 

    public DatabaseHandler(Context context) { 
     super(context, "sd card path here "+DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    // Creating Tables 
    @Override 
    public void onCreate(SQLiteDatabase db) { 
     String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "(" 
       + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT," 
       + KEY_PH_NO + " TEXT" + ")"; 
     db.execSQL(CREATE_CONTACTS_TABLE); 
    } 

它保存在SD卡,但有什么办法,我可以将数据库保存在内部存储器中,就像在“/ system”文件夹中一样?

+0

如果您正在为应用程序分配根权限,则可以访问内部内存,该权限仅适用于有根据的电话。 :) –

+0

@SaqibVohra,我的应用程序是一个系统应用程序,所以我们假设它具有读取和写入权限,所以在这种情况下,我可以简单地在构造函数中传递内部存储器的路径,就像上面的示例一样,或者是否存在不同的程序? –

+0

yup,正好:)如果你有root权限,你可以像访问文件夹一样/ system/app 这里是一个类似的线程,你会发现它很有用。 :) –

回答

2

但有没有什么办法可以将数据库保存在内存中,就像在“/ system”文件夹中一样?

不,因为您没有对该目录的读取或写入权限。

+0

我们暂时假设我正在开发一个系统应用程序,该应用程序与设备捆绑在一起,请原谅我的noobishness,但在这种情况下,这可能吗?如果是的话,我该怎么做? P.S.你和你的书的粉丝。 –

+0

@AalokSharma:预安装的应用程序不一定具有对该目录的读取或写入权限。如果是这样,那么你可以读写数据库。并感谢您的客气话! – CommonsWare

相关问题