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://blog.csdn.net/liuhe688/article/details/6715983),分析的很详细。

int delete( String table,  String whereClause,  String[] whereArgs)
Convenience method for deleting rows in the database.
static boolean deleteDatabase( File file)
Deletes a database including its journal file and other auxiliary files that may have been created by the database engine.
void execSQL( String sql)
Execute a single SQL statement that is NOT a SELECT or any other SQL statement that returns data.
void execSQL( String sql,  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.
int getVersion()
Gets the database version.
long insert( String table,  String nullColumnHack,  ContentValues values)
Convenience method for inserting a row into the database.
long insertOrThrow( String table,  String nullColumnHack,  ContentValues values)
Convenience method for inserting a row into the database.
boolean isOpen()
Returns true if the database is currently open.
boolean isReadOnly()
Returns true if the database is opened as read only.
boolean needUpgrade(int newVersion)
Returns true if the new version code is greater than the current database version.
Cursor query( String table,  String[] columns,  String selection,  String[] selectionArgs,  String groupBy,  String having,  String orderBy,  String limit)
Query the given table, returning a  Cursor over the result set.
Cursor query(boolean distinct,  String table,  String[] columns,  String selection,  String[] selectionArgs,  String groupBy,  String having,  String orderBy,  String limit,  CancellationSignal cancellationSignal)
Query the given URL, returning a  Cursor over the result set.
Cursor query( String table,  String[] columns,  String selection,  String[] selectionArgs,  String groupBy,  String having,  String orderBy)
Query the given table, returning a  Cursor over the result set.
Cursor query(boolean distinct,  String table,  String[] columns,  String selection,  String[] selectionArgs,  String groupBy,  String having,  String orderBy,  String limit)
Query the given URL, returning a  Cursor over the result set.
Cursor rawQuery( String sql,  String[] selectionArgs,  CancellationSignal cancellationSignal)
Runs the provided SQL and returns a  Cursor over the result set.
Cursor rawQuery( String sql,  String[] selectionArgs)
Runs the provided SQL and returns a  Cursor over the result set.
void setMaxSqlCacheSize(int cacheSize)
Sets the maximum size of the prepared-statement cache for this database.
long setMaximumSize(long numBytes)
Sets the maximum size the database will grow to.
void setVersion(int version)
Sets the database version.
int update( String table,  ContentValues values,  String whereClause,  String[] whereArgs)
Convenience method for updating rows in the database.

        SQLite的数据库事务

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

        使用事务的常用模式如下

 db.beginTransaction();
   try {
     ...
     db.setTransactionSuccessful();
   } finally {
     db.endTransaction();
   }

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

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

你可能感兴趣的:(sqlite数据库,SqLite数据库的后缀名,SQLite数据库事务,SqLite数据库的创建)