几个相关的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#bindString
和SQLiteProgram#bindLong
每次您想要运行该语句时。语句可能不会返回大于1x1的结果集。没有两个线程应该使用相同的
SQLiteStatement
同时。
参数 sql
String
原始SQL语句,可能包含?对于以后要绑定的未知值。
回报 SQLiteStatement
预编译 SQLiteStatement
对象。请注意SQLiteStatement
S不同步,有关更多细节,请参阅文档。
抛出 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 MapgetSyncedTables ()
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_READWRITE
,OPEN_READONLY
,CREATE_IF_NECESSARY
,NO_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_READWRITE
,OPEN_READONLY
,CREATE_IF_NECESSARY
,NO_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
A Cursor
对象,该对象位于第一个条目之前。请注意Cursor
S不同步,有关更多细节,请参阅文档。
另见:
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
A Cursor
对象,该对象位于第一个条目之前。请注意Cursor
S不同步,有关更多细节,请参阅文档。
另见:
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
A Cursor
对象,该对象位于第一个条目之前。请注意Cursor
S不同步,有关更多细节,请参阅文档。
另见:
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
A Cursor
对象,该对象位于第一个条目之前。请注意Cursor
S不同步,有关更多细节,请参阅文档。
另见:
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
A Cursor
对象,该对象位于第一个条目之前。请注意Cursor
S不同步,有关更多细节,请参阅文档。
另见:
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
A Cursor
对象,该对象位于第一个条目之前。请注意Cursor
S不同步,有关更多细节,请参阅文档。
另见:
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
A Cursor
对象,该对象位于第一个条目之前。请注意Cursor
S不同步,有关更多细节,请参阅文档。
rawQuery
加进API一级
public Cursor rawQuery (String sql, String[] selectionArgs)运行提供的SQL并返回
Cursor
结果集。
参数 sql
String
:SQL查询。不能终止sql字符串。
selectionArgs
String
:您可以在查询中的WHERE子句中包含?s,它将被selectionArgs的值替换。这些值将被绑定为String。
回报 Cursor
A Cursor
对象,该对象位于第一个条目之前。请注意Cursor
S不同步,有关更多细节,请参阅文档。
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
A Cursor
对象,该对象位于第一个条目之前。请注意Cursor
S不同步,有关更多细节,请参阅文档。
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
A Cursor
对象,该对象位于第一个条目之前。请注意Cursor
S不同步,有关更多细节,请参阅文档。
发布记忆
加进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, BinaryOperatoraggregateFunction) 注册可以从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, UnaryOperatorscalarFunction) 注册可以从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()
.