SQLiteDatabase-api

几个相关的sql

PRAGMA user_version;
PRAGMA max_page_count;
PRAGMA page_size;
PRAGMA database_list;
PRAGMA integrity_check;

 

官方API:https://developer.android.google.cn/reference/android/database/sqlite/SQLiteDatabase

 

SQLiteDatabase

科特林 |爪哇

public final class SQLiteDatabase 
extends SQLiteClosable 

java.lang.Object
   ↳ android.database.sqlite.SQLiteClosable
     ↳ android.database.sqlite.SQLiteDatabase
 

公开管理SQLite数据库的方法。

SQLiteDatabase有创建、删除、执行SQL命令和执行其他常见数据库管理任务的方法。

有关创建和管理数据库的示例,请参阅SDK中的记事本示例应用程序。

数据库名称在应用程序中必须是唯一的,而不是所有应用程序都是唯一的。

局部排序

除了SQLite的默认值BINARY整理者,Android提供了两个,LOCALIZED,它随系统当前区域设置的变化而变化,以及UNICODE,这是Unicode排序规则算法,不适合当前区域设置。

 

摘要

嵌套类

interface SQLiteDatabase.CursorFactory

用于允许返回Cursor调用查询时。

class SQLiteDatabase.OpenParams

用于打开的配置参数的包装器。SQLiteDatabase 

常数

int CONFLICT_ABORT

当发生约束冲突时,不执行回滚,因此保留对同一事务中先前命令的更改。

int CONFLICT_FAIL

当发生违反约束的情况时,该命令将使用返回代码SQLITE_Constraint中止。

int CONFLICT_IGNORE

当发生约束冲突时,不插入或更改包含约束冲突的一行。

int CONFLICT_NONE

当未指定冲突操作时,请使用下列操作。

int CONFLICT_REPLACE

当发生唯一约束冲突时,将在插入或更新当前行之前移除导致约束冲突的预先存在的行。

int CONFLICT_ROLLBACK

当发生违反约束的情况时,会立即回滚,从而结束当前事务,命令将使用SQLITE_Constraint的返回代码中止。

int CREATE_IF_NECESSARY

打开的旗子:标志openDatabase(File, SQLiteDatabase.OpenParams)若要创建数据库文件(如果数据库文件尚不存在),请执行以下操作。

int ENABLE_WRITE_AHEAD_LOGGING

打开的旗子:标志openDatabase(File, SQLiteDatabase.OpenParams)若要在默认情况下启用预写日志记录打开数据库文件,请执行以下操作。

int MAX_SQL_CACHE_SIZE

可由setMaxSqlCacheSize(int).

int NO_LOCALIZED_COLLATORS

打开的旗子:标志openDatabase(File, SQLiteDatabase.OpenParams)若要打开数据库而不支持本地化排序规则,请执行以下操作。

int OPEN_READONLY

打开的旗子:标志openDatabase(File, SQLiteDatabase.OpenParams)若要打开仅用于读取的数据库,请执行以下操作。

int OPEN_READWRITE

打开的旗子:标志openDatabase(File, SQLiteDatabase.OpenParams)若要打开用于读写的数据库,请执行以下操作。如果磁盘已满,这可能会失败,甚至在您实际编写任何东西之前。

int SQLITE_MAX_LIKE_PATTERN_LENGTH

在SQLite的默认IKE和GLOB实现中使用的模式匹配算法对于某些病理病例可以表现出O(N^2)性能(其中N是模式中的字符数)。

公共方法

void beginTransaction()

以独占模式开始事务。

void beginTransactionNonExclusive()

以立即模式开始事务。

void beginTransactionWithListener(SQLiteTransactionListenertransactionListener)

以独占模式开始事务。

void beginTransactionWithListenerNonExclusive(SQLiteTransactionListener transactionListener)

以立即模式开始事务。

SQLiteStatement compileStatement(String sql)

将SQL语句编译为可重用的预编译语句对象。

static SQLiteDatabase create(SQLiteDatabase.CursorFactory factory)

创建一个内存支持的SQLite数据库。

static SQLiteDatabase createInMemory(SQLiteDatabase.OpenParams openParams)

创建一个内存支持的SQLite数据库。

int delete(String table, String whereClause, String[] whereArgs)

删除数据库中行的方便方法。

static boolean deleteDatabase(File file)

删除数据库,包括其日志文件和数据库引擎可能创建的其他辅助文件。

void disableWriteAheadLogging()

此方法禁用由enableWriteAheadLogging().

boolean enableWriteAheadLogging()

此方法允许并行执行来自同一数据库上多个线程的查询。

void endTransaction()

结束交易。

void execSQL(String sql)

执行一个不是SELECT或任何其他返回数据的SQL语句的SQL语句。

void execSQL(String sql, Object[] bindArgs)

执行一个不是SELECT/INSERT/UPDATE/DELETE的SQL语句。

static String findEditTable(String tables)

查找第一个表的名称,该表是可编辑的。

List> getAttachedDbs()

通过在数据库上执行“实用化数据库_列表”,返回所有附加数据库的完整路径名列表,包括主数据库。

long getMaximumSize()

返回数据库可能增长到的最大大小。

long getPageSize()

返回当前数据库页大小(以字节为单位)。

String getPath()

获取数据库文件的路径。

Map getSyncedTables()

API级别15中不再推荐此方法。此方法不再起任何有用的作用,已被废弃。

int getVersion()

获取数据库版本。

boolean inTransaction()

如果当前线程有事务挂起,则返回true。

long insert(String table, String nullColumnHack, ContentValuesvalues)

将行插入数据库的方便方法。

long insertOrThrow(String table, String nullColumnHack,ContentValues values)

将行插入数据库的方便方法。

long insertWithOnConflict(String table, String nullColumnHack,ContentValues initialValues, int conflictAlgorithm)

将行插入数据库的一般方法。

boolean isDatabaseIntegrityOk()

在给定数据库(和所有附加数据库)上运行“务实完整性检查”,如果给定数据库(及其所有附加数据库)通过完整性检查,否则返回true。

boolean isDbLockedByCurrentThread()

如果当前线程持有到数据库的活动连接,则返回true。

boolean isDbLockedByOtherThreads()

此方法在API级别16中被废弃。始终返回false。不要使用这种方法。

boolean isOpen()

如果数据库当前处于打开状态,则返回true。

boolean isReadOnly()

如果数据库以只读形式打开,则返回true。

boolean isWriteAheadLoggingEnabled()

如果启用了此数据库的预写日志记录,则返回true。

void markTableSyncable(String table, String deletedTable)

API级别15中不再推荐此方法。此方法不再起任何有用的作用,已被废弃。

void markTableSyncable(String table, String foreignKey, StringupdateTable)

API级别15中不再推荐此方法。此方法不再起任何有用的作用,已被废弃。

boolean needUpgrade(int newVersion)

如果新版本代码大于当前数据库版本,则返回true。

static SQLiteDatabase openDatabase(String path, SQLiteDatabase.CursorFactoryfactory, int flags)

根据标志打开数据库OPEN_READWRITE OPEN_READONLY CREATE_IF_NECESSARY和/或NO_LOCALIZED_COLLATORS.

static SQLiteDatabase openDatabase(File path, SQLiteDatabase.OpenParams openParams)

根据指定的OpenParams

static SQLiteDatabase openDatabase(String path, SQLiteDatabase.CursorFactoryfactory, int flags, DatabaseErrorHandler errorHandler)

根据标志打开数据库OPEN_READWRITE OPEN_READONLY CREATE_IF_NECESSARY和/或NO_LOCALIZED_COLLATORS.

static SQLiteDatabase openOrCreateDatabase(File file, SQLiteDatabase.CursorFactoryfactory)

等效于openDatabase(file.getPath()、工厂、create_if_必要)。

static SQLiteDatabase openOrCreateDatabase(String path, SQLiteDatabase.CursorFactoryfactory, DatabaseErrorHandler errorHandler)

等效于openDatabase(PATH、工厂、CREATE_IF_EXITY、ErrorHandler)。

static SQLiteDatabase openOrCreateDatabase(String path, SQLiteDatabase.CursorFactoryfactory)

等效于openDatabase(路径、工厂、创建_if_必要)。

Cursor query(boolean distinct, String table, String[] columns, Stringselection, String[] selectionArgs, String groupBy, Stringhaving, String orderBy, String limit)

查询给定的URL,返回Cursor结果集。

Cursor query(String table, String[] columns, String selection,String[] selectionArgs, String groupBy, String having, StringorderBy, String limit)

查询给定的表,返回Cursor结果集。

Cursor query(boolean distinct, String table, String[] columns, Stringselection, String[] selectionArgs, String groupBy, Stringhaving, String orderBy, String limit, CancellationSignalcancellationSignal)

查询给定的URL,返回Cursor结果集。

Cursor query(String table, String[] columns, String selection,String[] selectionArgs, String groupBy, String having, StringorderBy)

查询给定的表,返回Cursor结果集。

Cursor queryWithFactory(SQLiteDatabase.CursorFactory cursorFactory,boolean distinct, String table, String[] columns, Stringselection, String[] selectionArgs, String groupBy, Stringhaving, String orderBy, String limit, CancellationSignalcancellationSignal)

查询给定的URL,返回Cursor结果集。

Cursor queryWithFactory(SQLiteDatabase.CursorFactory cursorFactory,boolean distinct, String table, String[] columns, Stringselection, String[] selectionArgs, String groupBy, Stringhaving, String orderBy, String limit)

查询给定的URL,返回Cursor结果集。

Cursor rawQuery(String sql, String[] selectionArgs,CancellationSignal cancellationSignal)

运行提供的SQL并返回Cursor结果集。

Cursor rawQuery(String sql, String[] selectionArgs)

运行提供的SQL并返回Cursor结果集。

Cursor rawQueryWithFactory(SQLiteDatabase.CursorFactorycursorFactory, String sql, String[] selectionArgs, StringeditTable, CancellationSignal cancellationSignal)

运行提供的SQL并返回结果集上的游标。

Cursor rawQueryWithFactory(SQLiteDatabase.CursorFactorycursorFactory, String sql, String[] selectionArgs, StringeditTable)

运行提供的SQL并返回结果集上的游标。

static int releaseMemory()

尝试释放SQLite持有但不需要正确操作的内存。

long replace(String table, String nullColumnHack, ContentValuesinitialValues)

用于替换数据库中的行的方便方法。

long replaceOrThrow(String table, String nullColumnHack,ContentValues initialValues)

用于替换数据库中的行的方便方法。

void setCustomAggregateFunction(String functionName,BinaryOperator aggregateFunction)

注册可以从SQL表达式调用的自定义聚合函数。

void setCustomScalarFunction(String functionName,UnaryOperator scalarFunction)

注册可以从SQL表达式调用的自定义标量函数。

void setForeignKeyConstraintsEnabled(boolean enable)

设置数据库是否启用外键约束。

void setLocale(Locale locale)

设置此数据库的区域设置。

void setLockingEnabled(boolean lockingEnabled)

这个方法在API级别16中被废弃了。这个方法现在什么也不做了。不要用。

void setMaxSqlCacheSize(int cacheSize)

设置此数据库的准备语句缓存的最大大小。

long setMaximumSize(long numBytes)

设置数据库将增长到的最大大小。

void setPageSize(long numBytes)

设置数据库页大小。

void setTransactionSuccessful()

将当前事务标记为成功。

void setVersion(int version)

设置数据库版本。

String toString()

返回对象的字符串表示形式。

int update(String table, ContentValues values, String whereClause,String[] whereArgs)

用于更新数据库中的行的方便方法。

int updateWithOnConflict(String table, ContentValues values,String whereClause, String[] whereArgs, int conflictAlgorithm)

用于更新数据库中的行的方便方法。

void validateSql(String sql, CancellationSignal cancellationSignal)

通过编译SQL SELECT语句来验证它是否有效。

boolean yieldIfContended()

此方法在API级别15中被废弃。如果db被多次锁定(因为嵌套事务),则不会产生锁。安全地使用收益。

boolean yieldIfContendedSafely()

暂时结束事务以让其他线程运行。

boolean yieldIfContendedSafely(long sleepAfterYieldDelay)

暂时结束事务以让其他线程运行。

保护方法

void finalize()

当垃圾收集确定不再有对对象的引用时,由对象上的垃圾收集器调用。

void onAllReferencesReleased()

对象的调用释放对对象的最后引用时调用releaseReference()close().

遗传方法

下课 android.database.sqlite.SQLiteClosable
下课 java.lang.Object
从接口 java.io.Closeable
从接口 java.lang.AutoCloseable

常数

冲突中止

加进空气污染指数第8级

public static final int CONFLICT_ABORT

当发生约束冲突时,不执行回滚,因此保留对同一事务中先前命令的更改。这是默认行为。

 

常数:2(0x00000002)

冲突失败

加进空气污染指数第8级

public static final int CONFLICT_FAIL

当发生违反约束的情况时,该命令将使用返回代码SQLITE_Constraint中止。但是,该命令在遇到约束冲突之前对数据库所做的任何更改都将保留下来,并且不会退出。

 

常数:3(0x00000003)

冲突忽略

加进空气污染指数第8级

public static final int CONFLICT_IGNORE

当发生约束冲突时,不插入或更改包含约束冲突的一行。但是命令继续正常执行。包含约束冲突的行之前和之后的其他行继续正常插入或更新。不返回错误。

 

常数:4(0x00000004)

无冲突

加进空气污染指数第8级

public static final int CONFLICT_NONE

当未指定冲突操作时,请使用下列操作。

 

常数:0(0x00000000)

冲突替换

加进空气污染指数第8级

public static final int CONFLICT_REPLACE

当发生唯一约束冲突时,将在插入或更新当前行之前移除导致约束冲突的预先存在的行。因此,插入或更新总是发生。命令继续正常执行。不返回错误。如果发生非空约束冲突,则将该空值替换为该列的默认值。如果列没有默认值,则使用中止算法。如果发生违反检查约束的情况,则使用忽略算法。当此冲突解决策略删除行以满足约束时,它不会调用这些行上的DELETE触发器。这种行为在将来的版本中可能会发生变化。

 

常数:5(0x00000005)

冲突回滚

加进空气污染指数第8级

public static final int CONFLICT_ROLLBACK

当发生违反约束的情况时,会立即回滚,从而结束当前事务,命令将使用SQLITE_Constraint的返回代码中止。如果没有事务处于活动状态(除了在每个命令上创建的隐含事务外),则此算法的工作方式与中止相同。

 

常数:1(0x00000001)

创建if_必要

加进API一级

public static final int CREATE_IF_NECESSARY

打开的旗子:标志openDatabase(File, SQLiteDatabase.OpenParams)若要创建数据库文件(如果数据库文件尚不存在),请执行以下操作。

 

常数:268435456(0x10000000)

启用预写日志记录

加进API第16级

public static final int ENABLE_WRITE_AHEAD_LOGGING

打开的旗子:标志openDatabase(File, SQLiteDatabase.OpenParams)若要在默认情况下启用预写日志记录打开数据库文件,请执行以下操作。使用此标志比调用enableWriteAheadLogging()。不能在只读数据库中使用预写日志记录,因此,如果数据库是只读的,则忽略此标志的值。

 

另见:

  • enableWriteAheadLogging()

常数:536870912(0x20000000)

MAX_SQL_缓存大小

加进空气污染指数第11级

public static final int MAX_SQL_CACHE_SIZE

可由setMaxSqlCacheSize(int)。每个准备好的语句都在1K-6K之间,这取决于SQL语句和模式的复杂性。大型SQL缓存可能使用大量内存。

 

常数:100(0x00000064)

无局部化校勘器

加进API一级

public static final int NO_LOCALIZED_COLLATORS

打开的旗子:标志openDatabase(File, SQLiteDatabase.OpenParams)若要打开数据库而不支持本地化排序规则,请执行以下操作。

这将导致排序器。LOCALIZED不要被创造。在使用此标志使用创建数据库的设置时,必须保持一致。如果设置好了,setLocale(Locale)什么也做不了。

 

常数:16(0x00000010)

开放自动机

加进API一级

public static final int OPEN_READONLY

打开的旗子:标志openDatabase(File, SQLiteDatabase.OpenParams)若要打开仅用于读取的数据库,请执行以下操作。如果磁盘可能已满,这是打开数据库的唯一可靠方法。

 

常数:1(0x00000001)

开放阅读

加进API一级

public static final int OPEN_READWRITE

打开的旗子:标志openDatabase(File, SQLiteDatabase.OpenParams)若要打开用于读写的数据库,请执行以下操作。如果磁盘已满,这可能会失败,甚至在您实际编写任何东西之前。

注意,此标志的值为0,因此它是默认的。

 

常数:0(0x00000000)

SQLITE_MAX_like模式长度

加进API一级

public static final int SQLITE_MAX_LIKE_PATTERN_LENGTH

在SQLite的默认IKE和GLOB实现中使用的模式匹配算法对于某些病理病例可以表现出O(N^2)性能(其中N是模式中的字符数)。为了避免拒绝服务攻击,IKE或GLOB模式的长度被限制为SQLITE_MAX_LIKE_PATING_Length字节。此限制的默认值为50000。现代工作站甚至可以相对快速地评估50000字节的病理样或GLOB模式。拒绝服务问题只在模式长度达到数百万字节时才起作用。然而,由于最有用的LIKE或GLOB模式最多只有几十个字节长,所以偏执型应用程序开发人员可能希望将这个参数缩小到几百个范围内,如果他们知道外部用户能够生成任意模式的话。

 

常数:50000(0x0000c350)

公共方法

入门交易

加进API一级

public void beginTransaction ()

以独占模式开始事务。

事务可以嵌套。当外部事务结束时,在该事务中完成的所有工作和所有嵌套事务都将提交或回滚。如果结束任何事务而没有标记为CLEAN(通过调用setTransactionSuccessful),这些更改将被回滚。否则他们就会被判有罪。

以下是用于交易的标准成语:

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

 

 

 

非封闭

加进空气污染指数第11级

public void beginTransactionNonExclusive ()

以立即模式开始事务。事务可以嵌套。当外部事务结束时,在该事务中完成的所有工作和所有嵌套事务都将提交或回滚。如果结束任何事务而没有标记为CLEAN(通过调用setTransactionSuccessful),这些更改将被回滚。否则他们就会被判有罪。

以下是用于交易的标准成语:

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

 

 

 

初学者事务WithListener

加进空气污染指数第5级

public void beginTransactionWithListener (SQLiteTransactionListener transactionListener)

以独占模式开始事务。

事务可以嵌套。当外部事务结束时,在该事务中完成的所有工作和所有嵌套事务都将提交或回滚。如果结束任何事务而没有标记为CLEAN(通过调用setTransactionSuccessful),这些更改将被回滚。否则他们就会被判有罪。

以下是用于交易的标准成语:

   db.beginTransactionWithListener(listener);
   try {
     ...
     db.setTransactionSuccessful();
   } finally {
     db.endTransaction();
   }
 

 

 

 

参数
transactionListener SQLiteTransactionListener侦听器,在事务开始、提交或回滚时,无论是显式地还是通过调用yieldIfContendedSafely().

 

初学者事务

加进空气污染指数第11级

public void beginTransactionWithListenerNonExclusive (SQLiteTransactionListener transactionListener)

以立即模式开始事务。事务可以嵌套。当外部事务结束时,在该事务中完成的所有工作和所有嵌套事务都将提交或回滚。如果结束任何事务而没有标记为CLEAN(通过调用setTransactionSuccessful),这些更改将被回滚。否则他们就会被判有罪。

以下是用于交易的标准成语:

   db.beginTransactionWithListenerNonExclusive(listener);
   try {
     ...
     db.setTransactionSuccessful();
   } finally {
     db.endTransaction();
   }
 

 

 

 

参数
transactionListener SQLiteTransactionListener侦听器,在事务开始、提交或回滚时,无论是显式地还是通过调用yieldIfContendedSafely().

 

汇编状态

加进API一级

public SQLiteStatement compileStatement (String sql)

将SQL语句编译为可重用的预编译语句对象。参数与execSQL(java.lang.String)。您可以在语句中添加?s,然后用SQLiteProgram#bindStringSQLiteProgram#bindLong每次您想要运行该语句时。语句可能不会返回大于1x1的结果集。

没有两个线程应该使用相同的SQLiteStatement同时。

 

参数
sql String原始SQL语句,可能包含?对于以后要绑定的未知值。

 

回报
SQLiteStatement 预编译SQLiteStatement对象。请注意SQLiteStatementS不同步,有关更多细节,请参阅文档。

 

抛出
SQLException  

创造

加进API一级

public static SQLiteDatabase create (SQLiteDatabase.CursorFactory factory)

创建一个内存支持的SQLite数据库。当数据库关闭时,其内容将被销毁。

将数据库的区域设置为系统的当前区域设置。打电话setLocale(Locale)如果你想要别的东西。

 

 

参数
factory SQLiteDatabase.CursorFactory:在调用查询时调用用于实例化游标的可选工厂类--此值可能为null.

 

回报
SQLiteDatabase 一个SQLiteDatabase实例--这个值永远不会是null.

 

抛出
SQLiteException 如果无法创建数据库

CreateInMemory

加进空气污染指数第27级

public static SQLiteDatabase createInMemory (SQLiteDatabase.OpenParams openParams)

创建一个内存支持的SQLite数据库。当数据库关闭时,其内容将被销毁。

将数据库的区域设置为系统的当前区域设置。打电话setLocale(Locale)如果你想要别的东西。

 

 

参数
openParams SQLiteDatabase.OpenParams用于打开SQLiteDatabase的配置参数null.

 

回报
SQLiteDatabase 一个SQLiteDatabase实例--这个值永远不会是null.

 

抛出
SQLException 如果无法创建数据库

删除

加进API一级

public int delete (String table, 
                String whereClause, 
                String[] whereArgs)

删除数据库中行的方便方法。

 

参数
table String*要从其中删除的表

 

whereClause String删除时应用的可选WHERE子句。传递NULL将删除所有行。

 

whereArgs String:您可以在WHERE子句中包括?s,该子句将由WHERE Args的值替换。这些值将被绑定为String。

 

回报
int 如果传入子句的话,受影响的行数,否则为0。移除所有行并将计数传递为“1”作为WHERE子句。

 

删除数据库

加进API第16级

public static boolean deleteDatabase (File file)

删除数据库,包括其日志文件和数据库引擎可能创建的其他辅助文件。

 

参数
file File*数据库文件路径。这个值绝不能是null.

 

回报
boolean 如果数据库已成功删除,则为true。

 

残疾书写--一种日志记录

加进API第16级

public void disableWriteAheadLogging ()

此方法禁用由enableWriteAheadLogging().

 

抛出
IllegalStateException 如果在调用此方法时正在进行事务处理。只有在没有正在进行的事务时,才能更改WAL模式。

另见:

  • enableWriteAheadLogging()

EnableWriteAhead Logging

加进空气污染指数第11级

public boolean enableWriteAheadLogging ()

此方法允许并行执行来自同一数据库上多个线程的查询。它通过打开到数据库的多个连接并为每个查询使用不同的数据库连接来做到这一点。数据库日志模式也被更改,以允许写入并发地进行读取。

当未启用预写日志(默认)时,不可能同时在数据库上进行读和写。在修改数据库之前,作者隐式地获取数据库上的独占锁,这将阻止读者在写入完成之前访问数据库。

相反,当启用预写日志(通过调用此方法)时,写操作发生在一个单独的日志文件中,该日志文件允许同时进行读取。当写入正在进行时,其他线程上的读者将感知数据库的状态,就像写入开始之前的状态一样。写入完成后,其他线程上的读者将感知数据库的新状态。

当数据库同时被多个线程并发访问和修改时,启用预写日志是一个好主意。但是,预写日志比普通日志使用的内存要多得多,因为同一个数据库有多个连接。因此,如果数据库只由单个线程使用,或者优化并发性不是很重要,那么应该禁用预写日志记录。

调用此方法后,只要数据库保持打开,就可以并行执行查询。若要禁用并行执行查询,请调用disableWriteAheadLogging()或者关闭数据库并重新打开它。

用于并行执行查询的最大连接数取决于设备内存和可能的其他属性。

如果查询是事务的一部分,则在同一数据库句柄上执行它--事务已开始。

作者应使用beginTransactionNonExclusive()beginTransactionWithListenerNonExclusive(android.database.sqlite.SQLiteTransactionListener)开始交易。非独占模式允许执行查询的其他线程可以读取数据库文件.

如果数据库有任何附加数据库,则不可能并行执行查询。同样,只读数据库或内存数据库不支持预写日志记录.在这种情况下,enableWriteAheadLogging()返回假。

启用预写日志记录的最佳方法是传递ENABLE_WRITE_AHEAD_LOGGING旗子openDatabase(File, SQLiteDatabase.OpenParams)。这比调用enableWriteAheadLogging()

     SQLiteDatabase db = SQLiteDatabase.openDatabase("db_filename", cursorFactory,
             SQLiteDatabase.CREATE_IF_NECESSARY | SQLiteDatabase.ENABLE_WRITE_AHEAD_LOGGING,
             myDatabaseErrorHandler);
 

 

 

另一种启用预写日志的方法是调用enableWriteAheadLogging()在打开数据库之后。

     SQLiteDatabase db = SQLiteDatabase.openDatabase("db_filename", cursorFactory,
             SQLiteDatabase.CREATE_IF_NECESSARY, myDatabaseErrorHandler);
     db.enableWriteAheadLogging();
 

 

 

另见SQLite预写日志记录有关预写日志记录工作方式的更多详细信息。

 

 

回报
boolean 如果启用预写日志记录,则为true。

 

抛出
IllegalStateException 如果在调用此方法时正在进行事务处理。只有在没有正在进行的事务时,才能更改WAL模式。

另见:

  • ENABLE_WRITE_AHEAD_LOGGING
  • disableWriteAheadLogging()

终末交易

加进API一级

public void endTransaction ()

结束交易。有关如何使用此操作以及事务何时提交和回滚的说明,请参见初学者事务处理。

 

execSQL

加进API一级

public void execSQL (String sql)

执行一个不是SELECT或任何其他返回数据的SQL语句的SQL语句。

它无法返回任何数据(例如受影响的行数)。相反,我们鼓励你使用insert(java.lang.String, java.lang.String, android.content.ContentValues)update(java.lang.String, android.content.ContentValues, java.lang.String, java.lang.String[]),等,在可能的情况下。

使用时enableWriteAheadLogging(),此类将自动管理日志模式。因此,不要使用“Pragma日志模式”设置日志模式。“如果您的应用程序正在使用enableWriteAheadLogging()

 

 

参数
sql String要执行的SQL语句。不支持用分号分隔的多个语句。

 

抛出
SQLException 如果sql字符串无效

execSQL

加进API一级

public void execSQL (String sql, 
                Object[] bindArgs)

执行一个不是SELECT/INSERT/UPDATE/DELETE的SQL语句。

对于INSERT语句,请使用以下任一语句。

  • insert(java.lang.String, java.lang.String, android.content.ContentValues)
  • insertOrThrow(java.lang.String, java.lang.String, android.content.ContentValues)
  • insertWithOnConflict(java.lang.String, java.lang.String, android.content.ContentValues, int)

对于UPDATE语句,请使用以下任何一种方法。

  • update(java.lang.String, android.content.ContentValues, java.lang.String, java.lang.String[])
  • updateWithOnConflict(java.lang.String, android.content.ContentValues, java.lang.String, java.lang.String[], int)

对于DELETE语句,请使用以下任何一种方法。

  • delete(java.lang.String, java.lang.String, java.lang.String[])

例如,以下是使用此方法的良好选择:

  • 变更表
  • 创建或删除表/触发器/视图/索引/虚拟表
  • 再索引
  • 释放
  • 保存点
  • 不返回数据的Pragma

 

使用时enableWriteAheadLogging(),此类将自动管理日志模式。因此,不要使用“Pragma日志模式”设置日志模式。“如果您的应用程序正在使用enableWriteAheadLogging()

 

 

参数
sql String要执行的SQL语句。不支持用分号分隔的多个语句。

 

bindArgs Object::bindArgs中只支持字节[]、字符串、长和双。

 

抛出
SQLException 如果sql字符串无效

FindEdittable

加进API一级

public static String findEditTable (String tables)

查找第一个表的名称,该表是可编辑的。

 

参数
tables String*表格清单

 

回报
String 第一个表

 

getAttachedDbs

加进空气污染指数第11级

public List> getAttachedDbs ()

通过在数据库上执行“实用化数据库_列表”,返回所有附加数据库的完整路径名列表,包括主数据库。

 

回报
List> 如果数据库未打开,则为ArrayList(数据库名称、数据库文件路径)或NULL。

 

最大尺寸

加进API一级

public long getMaximumSize ()

返回数据库可能增长到的最大大小。

 

回报
long 新的最大数据库大小

 

getPageSize

加进API一级

public long getPageSize ()

返回当前数据库页大小(以字节为单位)。

 

回报
long 数据库页大小,以字节为单位

 

getPath

加进API一级

public String getPath ()

获取数据库文件的路径。

 

回报
String 数据库文件的路径。

 

getSyncedTables

加进API一级 
不受欢迎空气污染指数第15级

public Map getSyncedTables ()

 

API级别15中不推荐此方法。
此方法不再有任何有用的用途,已被废弃。

不受欢迎。

 

回报
Map

 

getVersion

加进API一级

public int getVersion ()

获取数据库版本。

 

回报
int 数据库版本

 

不交易

加进API一级

public boolean inTransaction ()

如果当前线程有事务挂起,则返回true。

 

回报
boolean 如果当前线程位于事务中,则为true。

 

插入

加进API一级

public long insert (String table, 
                String nullColumnHack, 
                ContentValues values)

将行插入数据库的方便方法。

 

参数
table String*要插入行的表

 

nullColumnHack String*任择性;可能是null。SQL不允许在不指定至少一个列名的情况下插入一个完全空的行。如果你提供values为空,不知道列名,也无法插入空行。如果未将其设置为空,则nullColumnHack参数提供可空列名的名称,以便在values是空的。

 

values ContentValues此映射包含行的初始列值。键应该是列名,值应该是列值。

 

回报
long 新插入的行的行ID,如果发生错误,则为-1。

 

插入OrThrow

加进API一级

public long insertOrThrow (String table, 
                String nullColumnHack, 
                ContentValues values)

将行插入数据库的方便方法。

 

参数
table String*要插入行的表

 

nullColumnHack String*任择性;可能是null。SQL不允许在不指定至少一个列名的情况下插入一个完全空的行。如果你提供values为空,不知道列名,也无法插入空行。如果未将其设置为空,则nullColumnHack参数提供可空列名的名称,以便在values是空的。

 

values ContentValues此映射包含行的初始列值。键应该是列名,值应该是列值。

 

回报
long 新插入的行的行ID,如果发生错误,则为-1。

 

抛出
  android.database.SQLException
SQLException  

插入OnConflict

加进空气污染指数第8级

public long insertWithOnConflict (String table, 
                String nullColumnHack, 
                ContentValues initialValues, 
                int conflictAlgorithm)

将行插入数据库的一般方法。

 

参数
table String*要插入行的表

 

nullColumnHack String*任择性;可能是null。SQL不允许在不指定至少一个列名的情况下插入一个完全空的行。如果你提供initialValues为空,不知道列名,也无法插入空行。如果未将其设置为空,则nullColumnHack参数提供可空列名的名称,以便在initialValues是空的。

 

initialValues ContentValues此映射包含行的初始列值。键应该是列名,值应该是列值。

 

conflictAlgorithm int*插入冲突解决程序

 

回报
long 新插入的行或行的行ID。-1如果输入参数之一是conflictAlgorithm = CONFLICT_IGNORE或者发生了错误。

 

isDatabaseIntegrityOk

加进空气污染指数第11级

public boolean isDatabaseIntegrityOk ()

在给定数据库(和所有附加数据库)上运行“务实完整性检查”,如果给定数据库(及其所有附加数据库)通过完整性检查,否则返回true。

如果结果为false,则此方法将记录完整性_CHECK命令执行时报告的错误。

请注意,数据库上的“务实完整性检查”可能需要很长时间。

 

回报
boolean 如果给定数据库(及其所有附加数据库)通过完整性检查,则为true,否则为false。

 

isDbLockedByCurrentThread

加进API一级

public boolean isDbLockedByCurrentThread ()

如果当前线程持有到数据库的活动连接,则返回true。

此方法的名称来自与数据库的活动连接意味着线程在数据库上持有实际锁的时间。现在,不再存在真正的“数据库锁”,尽管如果线程无法获得执行特定操作的数据库连接,则可能会阻塞。

 

 

回报
boolean 如果当前线程持有到数据库的活动连接,则为true。

 

isDbLockedOtherThread

加进API一级 
不受欢迎API第16级

public boolean isDbLockedByOtherThreads ()

 

API级别16中不推荐此方法。
总是返回假。不要使用这种方法。

总是返回假。

不再存在数据库锁的概念,因此此方法总是返回false。

 

 

回报
boolean 假的。

 

开着

加进API一级

public boolean isOpen ()

如果数据库当前处于打开状态,则返回true。

 

回报
boolean 如果数据库当前处于打开状态(尚未关闭),则为true。

 

isReadOnly

加进API一级

public boolean isReadOnly ()

如果数据库以只读形式打开,则返回true。

 

回报
boolean 如果数据库以只读形式打开,则为true。

 

isWriteAhead LoggingEnable

加进API第16级

public boolean isWriteAheadLoggingEnabled ()

如果启用了此数据库的预写日志记录,则返回true。

 

回报
boolean 如果已为此数据库启用预写日志记录,则为true。

 

另见:

  • enableWriteAheadLogging()
  • ENABLE_WRITE_AHEAD_LOGGING

标记表同步

加进API一级 
不受欢迎空气污染指数第15级

public void markTableSyncable (String table, 
                String deletedTable)

 

API级别15中不推荐此方法。
此方法不再有任何有用的用途,已被废弃。

把这张桌子标记为同步表。在此表中发生更新时,将设置_sync_脏字段,以确保正确的同步操作。

 

参数
table String*要标记为同步的表

 

deletedTable String::与同步表相对应的已删除表

 

标记表同步

加进API一级 
不受欢迎空气污染指数第15级

public void markTableSyncable (String table, 
                String foreignKey, 
                String updateTable)

 

API级别15中不推荐此方法。
此方法不再有任何有用的用途,已被废弃。

将此表标记为synCable,并在另一个表中保留_sync_SALLY。在此表中发生更新时,将设置updateTable中的_sync_脏字段和ForeignKey中的id,以确保正确的同步操作。

 

参数
table String::此表上的更新将触发同步时间删除。

 

foreignKey String:这是表中的列,其值为updateTable中的a_id。

 

updateTable String:这是一个表,它的_SYNC_SALLY

 

针刺

加进API一级

public boolean needUpgrade (int newVersion)

如果新版本代码大于当前数据库版本,则返回true。

 

参数
newVersion int新版本代码。

 

回报
boolean 如果新版本代码大于当前数据库版本,则为true。

 

开放数据库

加进API一级

public static SQLiteDatabase openDatabase (String path, 
                SQLiteDatabase.CursorFactory factory, 
                int flags)

根据标志打开数据库OPEN_READWRITE OPEN_READONLY CREATE_IF_NECESSARY和/或NO_LOCALIZED_COLLATORS.

将数据库的区域设置为系统的当前区域设置。打电话setLocale(Locale)如果你想要别的东西。

 

 

参数
path String*要打开和/或创建此值的数据库文件,绝不能是null.

 

factory SQLiteDatabase.CursorFactory:调用一个可选的工厂类,用于在调用查询时实例化游标,或者默认为NULL,此值可能为null.

 

flags int控制数据库访问模式值是0或者是OPEN_READWRITEOPEN_READONLYCREATE_IF_NECESSARYNO_LOCALIZED_COLLATORS,和ENABLE_WRITE_AHEAD_LOGGING

 

回报
SQLiteDatabase 新打开的数据库

 

抛出
SQLiteException 如果无法打开数据库

开放数据库

加进空气污染指数第27级

public static SQLiteDatabase openDatabase (File path, 
                SQLiteDatabase.OpenParams openParams)

根据指定的OpenParams

 

参数
path File打开和/或创建数据库文件的路径。

重要:文件应从绝对路径或使用Context.getDatabasePath(String)。这个值绝不能是null.

openParams SQLiteDatabase.OpenParams*用于打开的配置参数SQLiteDatabase这个值绝不能是null.

 

回报
SQLiteDatabase 新打开的数据库

 

抛出
SQLiteException 如果无法打开数据库

开放数据库

加进空气污染指数第11级

public static SQLiteDatabase openDatabase (String path, 
                SQLiteDatabase.CursorFactory factory, 
                int flags, 
                DatabaseErrorHandler errorHandler)

根据标志打开数据库OPEN_READWRITE OPEN_READONLY CREATE_IF_NECESSARY和/或NO_LOCALIZED_COLLATORS.

将数据库的区域设置为系统的当前区域设置。打电话setLocale(Locale)如果你想要别的东西。

接受输入参数:DatabaseErrorHandler用于处理sqite报告数据库损坏时的损坏。

 

 

参数
path String*要打开和/或创建此值的数据库文件,绝不能是null.

 

factory SQLiteDatabase.CursorFactory:调用一个可选的工厂类,用于在调用查询时实例化游标,或者默认为NULL,此值可能为null.

 

flags int控制数据库访问模式值是0或者是OPEN_READWRITEOPEN_READONLYCREATE_IF_NECESSARYNO_LOCALIZED_COLLATORS,和ENABLE_WRITE_AHEAD_LOGGING

 

errorHandler DatabaseErrorHandler*DatabaseErrorHandler当sqite报告数据库损坏时,将使用OBJ处理损坏,此值可能为null.

 

回报
SQLiteDatabase 新打开的数据库

 

抛出
SQLiteException 如果无法打开数据库

openOrCreateDatabase

加进API一级

public static SQLiteDatabase openOrCreateDatabase (File file, 
                SQLiteDatabase.CursorFactory factory)

等效于openDatabase(file.getPath()、工厂、create_if_必要)。

 

参数
file File*这一价值绝不能是null.

 

factory SQLiteDatabase.CursorFactory*这一价值可能是null.

 

回报
SQLiteDatabase

 

openOrCreateDatabase

加进空气污染指数第11级

public static SQLiteDatabase openOrCreateDatabase (String path, 
                SQLiteDatabase.CursorFactory factory, 
                DatabaseErrorHandler errorHandler)

等效于openDatabase(PATH、工厂、CREATE_IF_EXITY、ErrorHandler)。

 

参数
path String*这一价值绝不能是null.

 

factory SQLiteDatabase.CursorFactory*这一价值可能是null.

 

errorHandler DatabaseErrorHandler*这一价值可能是null.

 

回报
SQLiteDatabase

 

openOrCreateDatabase

加进API一级

public static SQLiteDatabase openOrCreateDatabase (String path, 
                SQLiteDatabase.CursorFactory factory)

等效于openDatabase(路径、工厂、创建_if_必要)。

 

参数
path String*这一价值绝不能是null.

 

factory SQLiteDatabase.CursorFactory*这一价值可能是null.

 

回报
SQLiteDatabase

 

查询

加进API一级

public Cursor query (boolean distinct, 
                String table, 
                String[] columns, 
                String selection, 
                String[] selectionArgs, 
                String groupBy, 
                String having, 
                String orderBy, 
                String limit)

查询给定的URL,返回Cursor结果集。

 

参数
distinct boolean:如果您希望每一行都是唯一的,则为true,否则为false。

 

table String要编译查询的表名。

 

columns String返回哪些列的列表。传递NULL将返回所有列,这是不鼓励的,以防止从存储区读取不被使用的数据。

 

selection String:一个过滤器,声明要返回的行,格式化为SQLWHERE子句(不包括WHERE本身)。传递NULL将返回给定表的所有行。

 

selectionArgs String:您可以在选择中包括?s,它将被selectionArgs的值替换,以便它们出现在所选内容中。这些值将被绑定为String。

 

groupBy String:一个过滤器,声明如何分组行,格式化为SQL GROUP BY子句(本身不包括组)。传递NULL将导致行不被分组。

 

having String:如果正在使用行分组,则筛选器将声明要在游标中包含哪些行组,格式为SQL HARING子句(不包括HAVING本身)。传递NULL将导致包括所有行组,并且在不使用行分组时是必需的。

 

orderBy String::如何对行进行排序,格式化为SQLOrderBy子句(不包括Order本身)。传递NULL将使用默认排序顺序,排序顺序可能是无序的。

 

limit String::限制查询返回的行数,格式为限制子句。传递NULL表示无限制子句。

 

回报
Cursor Cursor对象,该对象位于第一个条目之前。请注意CursorS不同步,有关更多细节,请参阅文档。

 

另见:

  • Cursor

查询

加进API一级

public Cursor query (String table, 
                String[] columns, 
                String selection, 
                String[] selectionArgs, 
                String groupBy, 
                String having, 
                String orderBy, 
                String limit)

查询给定的表,返回Cursor结果集。

 

参数
table String要编译查询的表名。

 

columns String返回哪些列的列表。传递NULL将返回所有列,这是不鼓励的,以防止从存储区读取不被使用的数据。

 

selection String:一个过滤器,声明要返回的行,格式化为SQLWHERE子句(不包括WHERE本身)。传递NULL将返回给定表的所有行。

 

selectionArgs String:您可以在选择中包括?s,它将被selectionArgs的值替换,以便它们出现在所选内容中。这些值将被绑定为String。

 

groupBy String:一个过滤器,声明如何分组行,格式化为SQL GROUP BY子句(本身不包括组)。传递NULL将导致行不被分组。

 

having String:如果正在使用行分组,则筛选器将声明要在游标中包含哪些行组,格式为SQL HARING子句(不包括HAVING本身)。传递NULL将导致包括所有行组,并且在不使用行分组时是必需的。

 

orderBy String::如何对行进行排序,格式化为SQLOrderBy子句(不包括Order本身)。传递NULL将使用默认排序顺序,排序顺序可能是无序的。

 

limit String::限制查询返回的行数,格式为限制子句。传递NULL表示无限制子句。

 

回报
Cursor Cursor对象,该对象位于第一个条目之前。请注意CursorS不同步,有关更多细节,请参阅文档。

 

另见:

  • Cursor

查询

加进API第16级

public Cursor query (boolean distinct, 
                String table, 
                String[] columns, 
                String selection, 
                String[] selectionArgs, 
                String groupBy, 
                String having, 
                String orderBy, 
                String limit, 
                CancellationSignal cancellationSignal)

查询给定的URL,返回Cursor结果集。

 

参数
distinct boolean:如果您希望每一行都是唯一的,则为true,否则为false。

 

table String要编译查询的表名。

 

columns String返回哪些列的列表。传递NULL将返回所有列,这是不鼓励的,以防止从存储区读取不被使用的数据。

 

selection String:一个过滤器,声明要返回的行,格式化为SQLWHERE子句(不包括WHERE本身)。传递NULL将返回给定表的所有行。

 

selectionArgs String:您可以在选择中包括?s,它将被selectionArgs的值替换,以便它们出现在所选内容中。这些值将被绑定为String。

 

groupBy String:一个过滤器,声明如何分组行,格式化为SQL GROUP BY子句(本身不包括组)。传递NULL将导致行不被分组。

 

having String:如果正在使用行分组,则筛选器将声明要在游标中包含哪些行组,格式为SQL HARING子句(不包括HAVING本身)。传递NULL将导致包括所有行组,并且在不使用行分组时是必需的。

 

orderBy String::如何对行进行排序,格式化为SQLOrderBy子句(不包括Order本身)。传递NULL将使用默认排序顺序,排序顺序可能是无序的。

 

limit String::限制查询返回的行数,格式为限制子句。传递NULL表示无限制子句。

 

cancellationSignal CancellationSignal:取消正在进行的操作的信号,如果没有,则为NULL。如果操作被取消,则OperationCanceledException将在执行查询时抛出。

 

回报
Cursor Cursor对象,该对象位于第一个条目之前。请注意CursorS不同步,有关更多细节,请参阅文档。

 

另见:

  • Cursor

查询

加进API一级

public Cursor query (String table, 
                String[] columns, 
                String selection, 
                String[] selectionArgs, 
                String groupBy, 
                String having, 
                String orderBy)

查询给定的表,返回Cursor结果集。

 

参数
table String要编译查询的表名。

 

columns String返回哪些列的列表。传递NULL将返回所有列,这是不鼓励的,以防止从存储区读取不被使用的数据。

 

selection String:一个过滤器,声明要返回的行,格式化为SQLWHERE子句(不包括WHERE本身)。传递NULL将返回给定表的所有行。

 

selectionArgs String:您可以在选择中包括?s,它将被selectionArgs的值替换,以便它们出现在所选内容中。这些值将被绑定为String。

 

groupBy String:一个过滤器,声明如何分组行,格式化为SQL GROUP BY子句(本身不包括组)。传递NULL将导致行不被分组。

 

having String:如果正在使用行分组,则筛选器将声明要在游标中包含哪些行组,格式为SQL HARING子句(不包括HAVING本身)。传递NULL将导致包括所有行组,并且在不使用行分组时是必需的。

 

orderBy String::如何对行进行排序,格式化为SQLOrderBy子句(不包括Order本身)。传递NULL将使用默认排序顺序,排序顺序可能是无序的。

 

回报
Cursor Cursor对象,该对象位于第一个条目之前。请注意CursorS不同步,有关更多细节,请参阅文档。

 

另见:

  • Cursor

QueryWithFactory

加进API第16级

public Cursor queryWithFactory (SQLiteDatabase.CursorFactory cursorFactory, 
                boolean distinct, 
                String table, 
                String[] columns, 
                String selection, 
                String[] selectionArgs, 
                String groupBy, 
                String having, 
                String orderBy, 
                String limit, 
                CancellationSignal cancellationSignal)

查询给定的URL,返回Cursor结果集。

 

参数
cursorFactory SQLiteDatabase.CursorFactory:要使用的游标工厂,或默认工厂的NULL。

 

distinct boolean:如果您希望每一行都是唯一的,则为true,否则为false。

 

table String要编译查询的表名。

 

columns String返回哪些列的列表。传递NULL将返回所有列,这是不鼓励的,以防止从存储区读取不被使用的数据。

 

selection String:一个过滤器,声明要返回的行,格式化为SQLWHERE子句(不包括WHERE本身)。传递NULL将返回给定表的所有行。

 

selectionArgs String:您可以在选择中包括?s,它将被selectionArgs的值替换,以便它们出现在所选内容中。这些值将被绑定为String。

 

groupBy String:一个过滤器,声明如何分组行,格式化为SQL GROUP BY子句(本身不包括组)。传递NULL将导致行不被分组。

 

having String:如果正在使用行分组,则筛选器将声明要在游标中包含哪些行组,格式为SQL HARING子句(不包括HAVING本身)。传递NULL将导致包括所有行组,并且在不使用行分组时是必需的。

 

orderBy String::如何对行进行排序,格式化为SQLOrderBy子句(不包括Order本身)。传递NULL将使用默认排序顺序,排序顺序可能是无序的。

 

limit String::限制查询返回的行数,格式为限制子句。传递NULL表示无限制子句。

 

cancellationSignal CancellationSignal:取消正在进行的操作的信号,如果没有,则为NULL。如果操作被取消,则OperationCanceledException将在执行查询时抛出。

 

回报
Cursor Cursor对象,该对象位于第一个条目之前。请注意CursorS不同步,有关更多细节,请参阅文档。

 

另见:

  • Cursor

QueryWithFactory

加进API一级

public Cursor queryWithFactory (SQLiteDatabase.CursorFactory cursorFactory, 
                boolean distinct, 
                String table, 
                String[] columns, 
                String selection, 
                String[] selectionArgs, 
                String groupBy, 
                String having, 
                String orderBy, 
                String limit)

查询给定的URL,返回Cursor结果集。

 

参数
cursorFactory SQLiteDatabase.CursorFactory:要使用的游标工厂,或默认工厂的NULL。

 

distinct boolean:如果您希望每一行都是唯一的,则为true,否则为false。

 

table String要编译查询的表名。

 

columns String返回哪些列的列表。传递NULL将返回所有列,这是不鼓励的,以防止从存储区读取不被使用的数据。

 

selection String:一个过滤器,声明要返回的行,格式化为SQLWHERE子句(不包括WHERE本身)。传递NULL将返回给定表的所有行。

 

selectionArgs String:您可以在选择中包括?s,它将被selectionArgs的值替换,以便它们出现在所选内容中。这些值将被绑定为String。

 

groupBy String:一个过滤器,声明如何分组行,格式化为SQL GROUP BY子句(本身不包括组)。传递NULL将导致行不被分组。

 

having String:如果正在使用行分组,则筛选器将声明要在游标中包含哪些行组,格式为SQL HARING子句(不包括HAVING本身)。传递NULL将导致包括所有行组,并且在不使用行分组时是必需的。

 

orderBy String::如何对行进行排序,格式化为SQLOrderBy子句(不包括Order本身)。传递NULL将使用默认排序顺序,排序顺序可能是无序的。

 

limit String::限制查询返回的行数,格式为限制子句。传递NULL表示无限制子句。

 

回报
Cursor Cursor对象,该对象位于第一个条目之前。请注意CursorS不同步,有关更多细节,请参阅文档。

 

另见:

  • Cursor

rawQuery

加进API第16级

public Cursor rawQuery (String sql, 
                String[] selectionArgs, 
                CancellationSignal cancellationSignal)

运行提供的SQL并返回Cursor结果集。

 

参数
sql String:SQL查询。不能终止sql字符串。

 

selectionArgs String:您可以在查询中的WHERE子句中包含?s,它将被selectionArgs的值替换。这些值将被绑定为String。

 

cancellationSignal CancellationSignal:取消正在进行的操作的信号,如果没有,则为NULL。如果操作被取消,则OperationCanceledException将在执行查询时抛出。

 

回报
Cursor Cursor对象,该对象位于第一个条目之前。请注意CursorS不同步,有关更多细节,请参阅文档。

 

rawQuery

加进API一级

public Cursor rawQuery (String sql, 
                String[] selectionArgs)

运行提供的SQL并返回Cursor结果集。

 

参数
sql String:SQL查询。不能终止sql字符串。

 

selectionArgs String:您可以在查询中的WHERE子句中包含?s,它将被selectionArgs的值替换。这些值将被绑定为String。

 

回报
Cursor Cursor对象,该对象位于第一个条目之前。请注意CursorS不同步,有关更多细节,请参阅文档。

 

RAWQueryWithFactory

加进API第16级

public Cursor rawQueryWithFactory (SQLiteDatabase.CursorFactory cursorFactory, 
                String sql, 
                String[] selectionArgs, 
                String editTable, 
                CancellationSignal cancellationSignal)

运行提供的SQL并返回结果集上的游标。

 

参数
cursorFactory SQLiteDatabase.CursorFactory:要使用的游标工厂,或默认工厂的NULL。

 

sql String:SQL查询。不能终止sql字符串。

 

selectionArgs String:您可以在查询中的WHERE子句中包含?s,它将被selectionArgs的值替换。这些值将被绑定为String。

 

editTable String*可编辑的第一个表的名称

 

cancellationSignal CancellationSignal:取消正在进行的操作的信号,如果没有,则为NULL。如果操作被取消,则OperationCanceledException将在执行查询时抛出。

 

回报
Cursor Cursor对象,该对象位于第一个条目之前。请注意CursorS不同步,有关更多细节,请参阅文档。

 

RAWQueryWithFactory

加进API一级

public Cursor rawQueryWithFactory (SQLiteDatabase.CursorFactory cursorFactory, 
                String sql, 
                String[] selectionArgs, 
                String editTable)

运行提供的SQL并返回结果集上的游标。

 

参数
cursorFactory SQLiteDatabase.CursorFactory:要使用的游标工厂,或默认工厂的NULL。

 

sql String:SQL查询。不能终止sql字符串。

 

selectionArgs String:您可以在查询中的WHERE子句中包含?s,它将被selectionArgs的值替换。这些值将被绑定为String。

 

editTable String*可编辑的第一个表的名称

 

回报
Cursor Cursor对象,该对象位于第一个条目之前。请注意CursorS不同步,有关更多细节,请参阅文档。

 

发布记忆

加进API一级

public static int releaseMemory ()

尝试释放SQLite持有但不需要正确操作的内存。通常,此内存将来自页缓存。

 

回报
int 实际释放的字节数。

 

取代

加进API一级

public long replace (String table, 
                String nullColumnHack, 
                ContentValues initialValues)

用于替换数据库中的行的方便方法。如果不存在行,则插入新行。

 

参数
table String要替换行的表

 

nullColumnHack String*任择性;可能是null。SQL不允许在不指定至少一个列名的情况下插入一个完全空的行。如果你提供initialValues为空,不知道列名,也无法插入空行。如果未将其设置为空,则nullColumnHack参数提供可空列名的名称,以便在initialValues是空的。

 

initialValues ContentValues此映射包含行的初始列值。键应该是列名,值应该是列值。

 

回报
long 新插入的行的行ID,如果发生错误,则为-1。

 

替换OrThrow

加进API一级

public long replaceOrThrow (String table, 
                String nullColumnHack, 
                ContentValues initialValues)

用于替换数据库中的行的方便方法。如果不存在行,则插入新行。

 

参数
table String要替换行的表

 

nullColumnHack String*任择性;可能是null。SQL不允许在不指定至少一个列名的情况下插入一个完全空的行。如果你提供initialValues为空,不知道列名,也无法插入空行。如果未将其设置为空,则nullColumnHack参数提供可空列名的名称,以便在initialValues是空的。

 

initialValues ContentValues此映射包含行的初始列值。键应该是列名,值应该是列值。

 

回报
long 新插入的行的行ID,如果发生错误,则为-1。

 

抛出
  android.database.SQLException
SQLException  

setCustomAggregateFunction

在Android R中添加

public void setCustomAggregateFunction (String functionName, 
                BinaryOperator aggregateFunction)

注册可以从SQL表达式调用的自定义聚合函数。

例如,注册一个名为LONGEST可以在以下查询中使用SELECT LONGEST(name) FROM employees.

该方法的实现遵循Stream.reduce(BinaryOperator),而自定义聚合函数应该是由该类定义的关联累加函数。

当尝试使用相同的函数名注册多个函数时,SQLite将用最新的定义替换以前定义的任何函数,而不管它们是什么函数类型。SQLite不支持注销函数。

 

参数
functionName String::不区分大小写的名称来注册此函数,长度限制为255 UTF-8字节.这个值绝不能是null.

 

aggregateFunction BinaryOperator函数接口,当函数名被SQL语句使用时将被调用。SQL语句中的参数值被传递给FunctionalInterface,而来自FunctionalInterface的返回值被返回到SQL语句中。这个值绝不能是null.

 

抛出
SQLiteException 如果无法注册自定义函数。

另见:

  • setCustomScalarFunction(String, UnaryOperator)

setCustomScalarFunction

在Android R中添加

public void setCustomScalarFunction (String functionName, 
                UnaryOperator scalarFunction)

注册可以从SQL表达式调用的自定义标量函数。

例如,注册一个名为REVERSE可以在以下查询中使用SELECT REVERSE(name) FROM employees.

当尝试使用相同的函数名注册多个函数时,SQLite将用最新的定义替换以前定义的任何函数,而不管它们是什么函数类型。SQLite不支持注销函数。

 

参数
functionName String::不区分大小写的名称来注册此函数,长度限制为255 UTF-8字节.这个值绝不能是null.

 

scalarFunction UnaryOperator函数接口,当函数名被SQL语句使用时将被调用。SQL语句中的参数值被传递给FunctionalInterface,而来自FunctionalInterface的返回值被返回到SQL语句中。这个值绝不能是null.

 

抛出
SQLiteException 如果无法注册自定义函数。

另见:

  • setCustomAggregateFunction(String, BinaryOperator)

setForeignKeyConstraintsEnable

加进API第16级

public void setForeignKeyConstraintsEnabled (boolean enable)

设置数据库是否启用外键约束。

默认情况下,数据库不强制执行外键约束。此方法允许应用程序启用外键约束。每次打开数据库时都必须调用它,以确保会话启用外键约束。

调用此方法的好时机是在调用openOrCreateDatabase(File, SQLiteDatabase.CursorFactory)或在SQLiteOpenHelper#onConfigure回调。

禁用外键约束时,数据库不检查对数据库的更改是否会违反外键约束。同样,当禁用外键约束时,数据库将不会执行级联删除或更新触发器。因此,数据库状态可能变得不一致。若要执行数据库完整性检查,请调用isDatabaseIntegrityOk().

当事务正在进行时,不能调用此方法。

另见SQLite外键约束有关外键约束支持的详细信息。

 

 

参数
enable boolean:true启用外键约束,false禁用它们。

 

抛出
IllegalStateException 如果调用此方法时正在进行ARE事务。

setLocale

加进API一级

public void setLocale (Locale locale)

设置此数据库的区域设置。如果此数据库具有NO_LOCALIZED_COLLATORS标志设置或已被打开,只读。

 

参数
locale Locale*新地点。

 

抛出
SQLException 如果无法设置区域设置。最常见的原因是您所请求的区域设置没有可用的排序规则。在这种情况下,数据库保持不变。

setLockingEnable

加进API一级 
不受欢迎API第16级

public void setLockingEnabled (boolean lockingEnabled)

 

API级别16中不推荐此方法。
这个方法现在什么也不做。不要用。

通过使用关键部分周围的锁来控制SQLiteDatabase是否使线程安全。这是相当昂贵的,所以如果您知道您的DB将只由单个线程使用,那么您应该将其设置为false。默认值为真。

 

参数
lockingEnabled boolean*设置为true以启用锁,否则为false

 

setMaxSqlCacheSize

加进空气污染指数第11级

public void setMaxSqlCacheSize (int cacheSize)

设置此数据库的准备语句缓存的最大大小。(缓存的大小=存储在缓存中的编译-SQL-语句的数量)。

最大缓存大小只能从当前大小(默认值=10)增加。如果调用此方法的大小小于当前最大值,则引发IllegalStateException。

这种方法是线程安全的.

 

参数
cacheSize int缓存的大小。可以是(0到0)MAX_SQL_CACHE_SIZE)

 

抛出
IllegalStateException 如果输入cacheSize>MAX_SQL_CACHE_SIZE.

setMaximumSize

加进API一级

public long setMaximumSize (long numBytes)

设置数据库将增长到的最大大小。最大大小不能设置在当前大小以下。

 

参数
numBytes long最大数据库大小(以字节为单位)

 

回报
long 新的最大数据库大小

 

setPageSize

加进API一级

public void setPageSize (long numBytes)

设置数据库页大小。页面大小必须是2的幂。如果任何数据已写入数据库文件,并且必须在创建数据库后立即调用该方法,则此方法无法工作。

 

参数
numBytes long*数据库页大小,以字节为单位

 

setTransactionSuccessful

加进API一级

public void setTransactionSuccessful ()

将当前事务标记为成功。在调用此操作和调用endTransaction之间,不要再执行任何数据库工作。在这种情况下,尽量少做非数据库的工作。如果在此与endTransaction之间遇到任何错误,则仍将提交事务。

 

抛出
IllegalStateException 如果当前线程不在事务中,或者事务已标记为成功。

setVersion

加进API一级

public void setVersion (int version)

设置数据库版本。

 

参数
version int*新的数据库版本

 

托斯特林

加进API一级

public String toString ()

返回对象的字符串表示形式。一般来说,toString方法返回“文本表示”此对象的字符串。结果应该是一个简明扼要但内容丰富的表示法,对一个人来说是容易阅读的。建议所有子类重写此方法。

这个toString课堂方法Object返回一个字符串,该字符串由对象为实例的类的名称、符号字符`组成。@‘,以及对象的哈希代码的无符号十六进制表示形式。换句话说,此方法返回的字符串等于:

 getClass().getName() + '@' + Integer.toHexString(hashCode())
 

 

 

 

回报
String 对象的字符串表示形式。

 

更新

加进API一级

public int update (String table, 
                ContentValues values, 
                String whereClause, 
                String[] whereArgs)

用于更新数据库中的行的方便方法。

 

参数
table String*要更新的表

 

values ContentValues*从列名到新列值的映射。NULL是将被转换为NULL的有效值。

 

whereClause String更新时要应用的可选WHERE子句。传递NULL将更新所有行。

 

whereArgs String:您可以在WHERE子句中包括?s,该子句将由WHERE Args的值替换。这些值将被绑定为String。

 

回报
int 受影响的行数。

 

updateWithOnConflict

加进空气污染指数第8级

public int updateWithOnConflict (String table, 
                ContentValues values, 
                String whereClause, 
                String[] whereArgs, 
                int conflictAlgorithm)

用于更新数据库中的行的方便方法。

 

参数
table String*要更新的表

 

values ContentValues*从列名到新列值的映射。NULL是将被转换为NULL的有效值。

 

whereClause String更新时要应用的可选WHERE子句。传递NULL将更新所有行。

 

whereArgs String:您可以在WHERE子句中包括?s,该子句将由WHERE Args的值替换。这些值将被绑定为String。

 

conflictAlgorithm int*更新冲突解决程序

 

回报
int 受影响的行数。

 

验证Sql

加进API 24级

public void validateSql (String sql, 
                CancellationSignal cancellationSignal)

通过编译SQL SELECT语句来验证它是否有效。如果sql语句无效,此方法将引发SQLiteException.

 

参数
sql String:要验证的SQL,绝不能对此值进行验证。null.

 

cancellationSignal CancellationSignal:取消正在进行的操作的信号,如果没有,则为NULL。如果操作被取消,则OperationCanceledException将在执行查询时抛出。这个值可能是null.

 

抛出
SQLiteException 如果sql无效

屈服

加进API一级 
不受欢迎空气污染指数第15级

public boolean yieldIfContended ()

 

API级别15中不推荐此方法。
如果数据库被锁定不止一次(因为嵌套事务),则不会产生锁。安全地使用收益。

暂时结束事务以让其他线程运行。到目前为止,该交易被认为是成功的。在调用它之前不要调用setTransactionSuccessful。当返回时,将创建一个新事务,但未标记为成功。

 

回报
boolean 如果事务已生成,则为true。

 

产量安全

加进API三级

public boolean yieldIfContendedSafely ()

暂时结束事务以让其他线程运行。到目前为止,该交易被认为是成功的。在调用它之前不要调用setTransactionSuccessful。当返回时,将创建一个新事务,但未标记为成功。这假设不存在嵌套事务(入门事务只被调用一次),如果情况并非如此,则会抛出异常。

 

回报
boolean 如果事务已生成,则为true。

 

产量安全

加进空气污染指数第5级

public boolean yieldIfContendedSafely (long sleepAfterYieldDelay)

暂时结束事务以让其他线程运行。到目前为止,该交易被认为是成功的。在调用它之前不要调用setTransactionSuccessful。当返回时,将创建一个新事务,但未标记为成功。这假设不存在嵌套事务(入门事务只被调用一次),如果情况并非如此,则会抛出异常。

 

参数
sleepAfterYieldDelay long:如果>0,则在启动新事务之前(如果锁实际上已被释放)睡了很长时间。这将允许其他后台线程取得比我们立即启动事务时更多的进展。

 

回报
boolean 如果事务已生成,则为true。

 

保护方法

定案

加进API一级

protected void finalize ()

当垃圾收集确定不再有对对象的引用时,由对象上的垃圾收集器调用。子类覆盖finalize方法来释放系统资源或执行其他清理。

总合同finalize如果和当JAVA™虚拟机确定不再有任何方法可以通过任何尚未死掉的线程访问该对象,则调用该对象,除非是通过最后完成其他一些对象或类而采取的操作的结果。这个finalize方法可以采取任何操作,包括使该对象再次对其他线程可用;finalize但是,是在对象被不可撤销地丢弃之前执行清理操作。例如,表示输入/输出连接的对象的Finish方法可能执行显式I/O事务,以便在对象被永久丢弃之前中断连接。

这个finalize课堂方法Object不执行特殊操作;它只是正常返回。子类Object可能会覆盖这个定义。

Java编程语言并不保证哪个线程将调用finalize方法用于任何给定对象。但是,在调用Finish时,可以保证调用Finish的线程不会持有任何用户可见的同步锁。如果由Finish方法抛出一个未捕获的异常,则忽略该异常并终止该对象的终结。

在.之后finalize方法已为对象调用,在Java虚拟机再次确定没有任何方法可以通过任何尚未死掉的线程访问该对象之前,不采取进一步的操作,包括其他已准备完成的对象或类可能采取的操作,此时该对象可能被丢弃。

这个finalize方法从未被任何给定对象的Java虚拟机调用不止一次。

类引发的任何异常。finalize方法会导致此对象的终结被停止,但否则将被忽略。

 

抛出
Throwable  

所有参考资料--释放

加进API一级

protected void onAllReferencesReleased ()

对象的调用释放对对象的最后引用时调用releaseReference()close().

你可能感兴趣的:(数据库)