Sqlite数据库相关(一)SQLiteDatabase类

前端之家收集整理的这篇文章主要介绍了Sqlite数据库相关(一)SQLiteDatabase类前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

sqlite简介

sqlite是Android系统集成了的一个轻量的数据库,这是一个轻量级的数据库引擎,专门适用于资源有限的设备上适量的数据存储。


sqliteDatabase简介

一个sqliteDatabase就代表一个数据库,底层就是一个数据库文件,一旦应用获得了代表指定数据库sqliteDatabase对象,就可以通过该对象来对数据库进行操作。


sqliteDatabase数据库数据库对象的创建

sqliteDatabase提供了下列静态方法打开一个文件对应的数据库

static sqliteDatabase openDatabase(String path,sqliteDatabase.CursorFactory factory,int flags); 打开path路径对应的sqlite数据库

static sqliteDatabase openOrCreateDatabase(File file,sqliteDatabase.CursorFactory factory); 打开或者创建一个文件file对应的sqlite数据库

static sqliteDatabase openOrCreateDatabase(String path,sqliteDatabase.CursorFactory factory); 打开或者创建一个path文件所代表的sqlite数据库

注:这里的sqliteDatabase.CursorFactory表示允许在数据对象调用查询的时候返回一个Cursor的子类对象。指定文件名创建数据库对象时,文件的后缀名没有硬性要求,可有可无,原因是android基于linux,而在linux中文件的后缀名没有windows中那么严格,仅仅是一个文件类型的标识而已。


sqliteDatabase的数据库操作的常用方法

对于所有的数据增删查改方法,基本的原理就是对sql语句进行了封装,使其对象化和函数化,如果学过J2EE的持久化层框架,那么很容易理解这里的处理过程与Hibernate和Mybatis基本相同。具体的使用实例可以参考这篇文章http://www.jb51.cc/article/p-fcdgiacb-rg.html),分析的很详细。

int delete( Stringtable,StringwhereClause,175); text-decoration:none; margin-bottom:0px" rel="nofollow">String[]whereArgs)
Convenience method for deleting rows in the database.
static boolean deleteDatabase( Filefile)
Deletes a database including its journal file and other auxiliary files that may have been created by the database engine.
void execSQL( Stringsql)
Execute a single sql statement that is NOT a SELECT or any other sql statement that returns data.
Stringsql,Object[]bindArgs)
Execute a single sql statement that is NOT a SELECT/INSERT/UPDATE/DELETE.
long getMaximumSize()
Returns the maximum size the database may grow to.
final String getPath()
Gets the path to the database file.
getVersion()
Gets the database version.
insert( StringnullColumnHack,ContentValuesvalues)
Convenience method for inserting a row into the database.
insertOrThrow( ContentValuesvalues)
Convenience method for inserting a row into the database.
boolean isOpen()
Returns true if the database is currently open.
isReadOnly()
Returns true if the database is opened as read only.
needUpgrade(int newVersion)
Returns true if the new version code is greater than the current database version.
Cursor query( String[]columns,175); text-decoration:none" rel="nofollow">Stringselection,175); text-decoration:none" rel="nofollow">String[]selectionArgs,175); text-decoration:none" rel="nofollow">StringgroupBy,175); text-decoration:none" rel="nofollow">Stringhaving,175); text-decoration:none" rel="nofollow">StringorderBy,175); text-decoration:none; margin-bottom:0px" rel="nofollow">Stringlimit)
Query the given table,returning a Cursorover the result set.
query(boolean distinct,175); text-decoration:none" rel="nofollow">Stringlimit,CancellationSignalcancellationSignal)
Query the given URL,175); text-decoration:none; margin-bottom:0px" rel="nofollow">Cursorover the result set.
StringorderBy)
Query the given table,175); text-decoration:none; margin-bottom:0px" rel="nofollow">Cursorover the result set.
Stringlimit)
Query the given URL,175); text-decoration:none; margin-bottom:0px" rel="nofollow">Cursorover the result set.
rawQuery( CancellationSignalcancellationSignal)
Runs the provided sql and returns a String[]selectionArgs)
Runs the provided sql and returns a Cursorover the result set.
setMaxSqlCacheSize(int cacheSize)
Sets the maximum size of the prepared-statement cache for this database.
setMaximumSize(long numBytes)
Sets the maximum size the database will grow to.
setVersion(int version)
Sets the database version.
update( ContentValuesvalues,175); text-decoration:none; margin-bottom:0px" rel="nofollow">String[]whereArgs)
Convenience method for updating rows in the database.

sqlite的数据库事务

sqlite事务(Transaction)和其他所有数据库的事务一样,是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转账工作:从一个账号扣款并使另一个账号增款,这两个操作要么都执行,要么都不执行。所以,应该把它们看成一个事务。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。

使用事务的常用模式如下

db.beginTransaction();
 try {
  ...
  dbsetTransactionSuccessful
 } finallyendTransaction}

sqliteDatabase的数据库事务操作方法包括下列一些,四种启动方式的区别,官方文档并没有明确说明。统一的说明是允许事务嵌套使用,所有的嵌套事务会同时成功或失败,如果某个嵌套事务没有调用isTransactioinSuccessful(),那么所有的事务都会回滚,否则,所有的事务都会提交。

beginTransaction()
Begins a transaction in EXCLUSIVE mode.
beginTransactionNonExclusive()
Begins a transaction in IMMEDIATE mode.
beginTransactionWithListener( SQLiteTransactionListenertransactionListener)
Begins a transaction in EXCLUSIVE mode.
beginTransactionWithListenerNonExclusive( SQLiteTransactionListenertransactionListener)
Begins a transaction in IMMEDIATE mode.
endTransaction()
End a transaction.
inTransaction()
Returns true if the current thread has a transaction pending.

猜你在找的Sqlite相关文章