Context.openOrCreateDatabase 与 SQLiteDatabase.openOrCreateDatabase的区别
Context.openOrCreateDatabase 与
SQLiteDatabase.openOrCreateDatabase本质上完成的功能都一
样,Context.openOrCreateDatabase最终是需要调用
SQLiteDatabase.openOrCreateDatabase来完成数据库的创建的。
也就是说, SQLiteDatabase类是android上对sqlite的最底层的封装,几乎所有的对数据库的操作最终都通过这个类来实现。
而Context里面提供的方法,是用于上下文的时候创建数据库,例如你在某个逻辑里面创建的数据库只是在特定的context里面,对于数据库的权限,交由context来管理,而这个逻辑可能是会提供给不止一个context
至于SQLiteDatabase和SQLiteOpenHelper就更好理解了,后者只是一个抽象类,用来告诉你怎样使用SQLiteDatabase类而已,你完全可以自己基于SQLiteDatabase写一个自己的helper.
分享到:
相关推荐
hello!大家好啊!好久不见哈,有些日子没写博客了哈!不过我可没偷懒啊,我只不过去收集博客素材了,收获满满哦!...Context.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteD
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbHelper.getDatabasePath(DATABASE_NAME), null); ``` 5. **最佳实践**: - 尽可能使用`SQLiteOpenHelper`,因为它提供了数据库版本管理和回调方法。...
public DBOpenHandler(Context context, String dbName, SQLiteDatabase.CursorFactory factory, int dbVersion) { super(context, dbName, factory, dbVersion); } @Override public void onCreate...
- 使用`Context.openOrCreateDatabase()`函数创建或打开数据库,如`Context.openOrCreateDatabase("my_sqlite_database.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);` 5. **创建表**: - 使用`execSQL()`...
SQLiteDatabase myDatabase = this.openOrCreateDatabase("myDatabase.db", MODE_PRIVATE, null); // 创建表 myDatabase.execSQL("CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY, name TEXT)"); // ...
SQLiteDatabase db = this.openOrCreateDatabase("MyDB", Context.MODE_PRIVATE, null); db.execSQL("CREATE TABLE IF NOT EXISTS my_table (id INTEGER PRIMARY KEY, data TEXT)"); db.execSQL("INSERT INTO my_...
正常情况下返回与`getWritableDatabase()`相同的行为,但如果遇到磁盘空间不足或数据库只能以只读方式打开等问题,则会返回只读的`SQLiteDatabase`对象。当这些问题被解决后,只读的`SQLiteDatabase`对象会被关闭,...
SQLiteDatabase db = context.openOrCreateDatabase("MyDB", MODE_PRIVATE, null); // 执行SQL创建表 db.execSQL("CREATE TABLE IF NOT EXISTS Users (ID INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT, Age ...
- `SQLiteDatabase db = context.openOrCreateDatabase("数据库名.db", MODE_PRIVATE, null);` - **创建表**: - 使用`execSQL()`或`rawQuery()`方法执行SQL语句,如:`db.execSQL("CREATE TABLE IF NOT EXISTS ...
- 创建数据库:通常有两种方式,一是通过`Context.createDatabase()`,二是通过`Context.openOrCreateDatabase()`,通常传入的`CursorFactory`为null。 - 继承`SQLiteOpenHelper`:这是管理数据库创建和升级的标准...
初始化对象:SQLiteDatabase db = context.openOrCreateDatabase("test.db", Context.MODE_PRIVATE, null); DbSqlite dbSqlite = new DbSqlite(db); IBaseDao userDAO = DaoFactory.createGenericDao(db...
Context.openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory) ``` 这里,`name`是数据库的名称,`mode`定义了数据库的访问权限,`factory`则是用于创建Cursor对象的工厂类。虽然...
SQLCipher在这些基本操作上与未加密的SQLite数据库并无区别,但请注意,由于数据的加密,查询性能可能会略有下降。 总结起来,SQLCipher是一个强大的工具,能够为SQLite数据库提供额外的安全保障。通过在项目中集成...
3. 使用`Context.openOrCreateDatabase()`或`SQLiteDatabase.create()`方法创建并打开数据库。如果数据库已存在,此操作会直接打开;如果不存在,会创建一个新数据库。 4. 在复制数据库文件时,需要获取`assets`...
SQLiteDatabase myDatabase = this.openOrCreateDatabase("myDatabase.db", MODE_PRIVATE, null); myDatabase.execSQL("CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY, name TEXT)"); // 插入数据 ...
- 创建数据库实例:`this.openOrCreateDatabase("info", SQLiteDatabase.OPEN_READWRITE, null);` - 创建表:`create_table`变量定义了创建表的SQL语句,然后通过`db.execSQL(create_table)`执行。 5. **职业素质...
SQLiteDatabase db = context.openOrCreateDatabase("friends", Context.MODE_PRIVATE, null); ``` #### 表的创建与数据操作 - **创建表**:可以通过SQL语句或Java代码来创建表。例如,使用命令行方式创建一个名...
SQLiteDatabase db = this.openOrCreateDatabase("mydatabase.db", Context.MODE_PRIVATE, null); // 创建表 db.execSQL("CREATE TABLE IF NOT EXISTS Users (id INTEGER PRIMARY KEY, name TEXT)"); // 插入数据 ...
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(databasePath, "your_password", null); ``` 这里的"your_password"就是加密密钥。 5. **安全性考虑**: 虽然SQLCipher提供了加密功能,但安全性的...