首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android | SQLite的使用

    SQLiteOpenHelper帮助类(是一个抽象类) 借助这个类就可以非常简单地对数据库进行创建和升级; 创建数据库 SQLiteOpenHelper是抽象类,需创建自己的类继承; 其中有两个抽象方法, onCreate()和onUpgrade...还有两个重要的实例方法: getReadableDatabase()和getWritableDatabase()。...()不会再执行了, 因为数据库只能创建一次,刚刚已经创建过了; 所以这里只能在onUpgrade()中, 执行Drop将原来的表删掉, 再重新调用onCreate()方法, 这样一开始的表和新加的表都会被创建...()返回的SQLiteDatabase对象; 在Android中即使不去编写SQL语句, 提供了一系列辅助性方法, 也能轻松完成所有CRUD操作。...} cursor.close(); } }); Cursor实例每次指向返回数据表的一行, 通过moveToFirst()和moveToNext

    1.9K30

    Android之SQLite使用

    就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件....SQLite 不需要配置,这意味着不需要安装或管理。 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。...SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。 SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。...SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行。...综合来看,即轻量 兼容 多端 无需配置 无外部依赖 拥有简单易懂的API 安全 SQLiteDatabase和SQLiteOpenHelper SQLiteDatabase是Android SDK中操作数据库的核心类之一

    86320

    Android 中 SQLite 性能优化

    数据库是应用开发中常用的技术,在Android应用中也不例外。Android默认使用了SQLite数据库,在应用程序开发中,我们使用最多的无外乎增删改查。...然而正如西方谚语 “There are two sides of a coin”,索引亦有缺点: 对于增加,更新和删除来说,使用了索引会变慢,比如你想要删除字典中的一个字,那么你同时也需要删除这个字在拼音索引和部首索引中的信息...建立索引会增加数据库的大小,比如字典中的拼音索引和部首索引实际上是会增加字典的页数,让字典变厚的。 为数据量比较小的表建立索引,往往会事倍功半。...编译SQL语句 SQLite想要执行操作,需要将程序中的sql语句编译成对应的SQLiteStatement,比如select * from record这一句,被执行100次就需要编译100次。...关于如何发现未关闭的Cursor,我们可以使用StrictMode,详细请戳这里Android性能调优利器StrictMode 耗时异步化 数据库的操作,属于本地IO,通常比较耗时,如果处理不好,很容易导致

    1.5K10

    Android Sqlite并发问题

    (Binder.java:565) 如上异常堆栈中的错误信息error code 5: database is locked,经过查找发现code为5代表sqlite中的SQLITE_BUSY异常,详见...:https://www.sqlite.org/rescode.html#busy,这里面说,SQLITE_BUSY(5)异常是一个数据库文件在被其他不同的数据库连接进行并发操作的时候写操作将补发继续,...通常是多个进程的不同数据库连接对同一个数据库进行并发操作,例如进程A在进行耗时的数据库事务,而于此同时进程B也要进行一个数据库事务,这时候进程B就会直接返回SQLITE_BUSY的错误码,因为sqlite...,这里还有一个相似的数据库操作异常,code为6,对应的是SQLITE_LOCKED,详见:https://www.sqlite.org/rescode.html#busy,具体意思就是说,SQLITE_LOCKED...详见:https://github.com/sqlcipher/android-database-sqlcipher/issues/341#issuecomment-310289295,现在是改成动态来分配大小的

    1.8K40

    Kotlin 协程和 Android SQLite API 中的线程模型

    在我们为 Room 添加协程的支持期间,我们遇到并解决了在协程模型和 Android SQL API 中没想到的一些问题。在本篇文章中,我们会向您阐述我们遇到的这些问题,以及我们的解决方案。...的 SQLite 事务受制于单个线程 上述代码中的问题在于 Android 的 SQLite 事务是受制于单个线程的。...在协程中使用数据库事务操作可能会引起死锁 简单实现 为了解决 Android SQLite 的这个限制,我们需要一个类似于 runInTransaction 这样可以接受挂起代码块的 API,这个 API...中 SQLite 的线程限制是合理的,这在 Kotlin 还没出现时已然如此设计了。...直接取消 Android 线程对 SQLite 事务的限制是不可行的,因为我们希望提供一个向后兼容的解决方案,而上述这些方法的组合最终让我们在使用协程和 Fluent API 的解决方案中发挥了创造性。

    2.4K20

    android之数据存储之SQLite

    constrains),嵌套 transcaction 和 RIGHT OUTER JOIN 和 FULL OUTER JOIN, 还有一些 ALTER TABLE 功能。...有五种常用数据类型: NULL:空值 INTEGER:整形 REAL:浮点型 VARCHAR:字符型 BLOB:大数据 注意:SQLite不支持BOOLEAN和DATE,因此可以用0,1代替BOOLEAN...(其它数据库也经常这么干) INTEGER或VARCHAR代替DATE 在Android系统中提供了android.database.sqlite包,用于进行SQLite数据库的增、删、改、查工作  android-sdk-windows...中sqlite3的配置,将eclipse\android-sdk-windows\tools中sqlite3.exe拷贝至eclipse\android-sdk-windows\platform-tools...将上面%Android%添加至Path后面,注意前面加分号 ? 然后打开cmd 输入sqlite3返回以下内容说明配置成功,接下来可以对数据库操作。 ?

    1.3K90

    Android学习--持久化(三) SQLite & LitePal

    ,Android有LitePal, 这一篇文章好好总结一下 SQLite & LitePal,由于自己用的是Mac系统,在配置 adb的时候也遇到了一些问题,把这些问题也都说一下,避免大家跳太多的坑吧。...SQLite ----       一:SQLite的创建       Android为了让我们更加方便的管理数据库,专门提供了一个SQLiteOpenHelper的抽象类,这意味的我们要是想使用它的话就得我们创建一个类去继承它...import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper...; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase...; import android.database.sqlite.SQLiteDatabaseLockedException; import android.support.v7.app.AppCompatActivity

    99530
    领券