幾個相關的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
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<Pair<String, String>>
getAttachedDbs()
通過在數據庫上執行“實用化數據庫_列表”,返回所有附加數據庫的完整路徑名列表,包括主數據庫。
long
getMaximumSize()
返回數據庫可能增長到的最大大小。
long
getPageSize()
返回當前數據庫頁大小(以字節爲單位)。
String
getPath()
獲取數據庫文件的路徑。
Map<String, String>
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<String> aggregateFunction)
註冊可以從SQL表達式調用的自定義聚合函數。
void
setCustomScalarFunction(String functionName,UnaryOperator<String> 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
常數
衝突中止
public static final int CONFLICT_ABORT當發生約束衝突時,不執行回滾,因此保留對同一事務中先前命令的更改。這是默認行爲。
常數:2(0x00000002)
衝突失敗
public static final int CONFLICT_FAIL當發生違反約束的情況時,該命令將使用返回代碼SQLITE_Constraint中止。但是,該命令在遇到約束衝突之前對數據庫所做的任何更改都將保留下來,並且不會退出。
常數:3(0x00000003)
衝突忽略
public static final int CONFLICT_IGNORE當發生約束衝突時,不插入或更改包含約束衝突的一行。但是命令繼續正常執行。包含約束衝突的行之前和之後的其他行繼續正常插入或更新。不返回錯誤。
常數:4(0x00000004)
無衝突
public static final int CONFLICT_NONE當未指定衝突操作時,請使用下列操作。
常數:0(0x00000000)
衝突替換
public static final int CONFLICT_REPLACE當發生唯一約束衝突時,將在插入或更新當前行之前移除導致約束衝突的預先存在的行。因此,插入或更新總是發生。命令繼續正常執行。不返回錯誤。如果發生非空約束衝突,則將該空值替換爲該列的默認值。如果列沒有默認值,則使用中止算法。如果發生違反檢查約束的情況,則使用忽略算法。當此衝突解決策略刪除行以滿足約束時,它不會調用這些行上的DELETE觸發器。這種行爲在將來的版本中可能會發生變化。
常數:5(0x00000005)
衝突回滾
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()
。不能在只讀數據庫中使用預寫日誌記錄,因此,如果數據庫是隻讀的,則忽略此標誌的值。
另見:
常數:536870912(0x20000000)
MAX_SQL_緩存大小
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(); }
非封閉
public void beginTransactionNonExclusive ()以立即模式開始事務。事務可以嵌套。當外部事務結束時,在該事務中完成的所有工作和所有嵌套事務都將提交或回滾。如果結束任何事務而沒有標記爲CLEAN(通過調用setTransactionSuccessful),這些更改將被回滾。否則他們就會被判有罪。
以下是用於交易的標準成語:
db.beginTransactionNonExclusive(); try { ... db.setTransactionSuccessful(); } finally { db.endTransaction(); }
初學者事務WithListener
public void beginTransactionWithListener (SQLiteTransactionListener transactionListener)以獨佔模式開始事務。
事務可以嵌套。當外部事務結束時,在該事務中完成的所有工作和所有嵌套事務都將提交或回滾。如果結束任何事務而沒有標記爲CLEAN(通過調用setTransactionSuccessful),這些更改將被回滾。否則他們就會被判有罪。
以下是用於交易的標準成語:
db.beginTransactionWithListener(listener); try { ... db.setTransactionSuccessful(); } finally { db.endTransaction(); }
參數 transactionListener
SQLiteTransactionListener
偵聽器,在事務開始、提交或回滾時,無論是顯式地還是通過調用yieldIfContendedSafely()
.
初學者事務
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
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模式。 另見:
EnableWriteAhead Logging
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模式。 另見:
終末交易
加進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語句,請使用以下任何一種方法。
例如,以下是使用此方法的良好選擇:
- 變更表
- 創建或刪除表/觸發器/視圖/索引/虛擬表
- 再索引
- 釋放
- 保存點
- 不返回數據的Pragma
使用時
enableWriteAheadLogging()
,此類將自動管理日誌模式。因此,不要使用“Pragma日誌模式”設置日誌模式。“如果您的應用程序正在使用enableWriteAheadLogging()
參數 sql
String
要執行的SQL語句。不支持用分號分隔的多個語句。
bindArgs
Object
::bindArgs中只支持字節[]、字符串、長和雙。
拋出 SQLException
如果sql字符串無效 FindEdittable
加進API一級
public static String findEditTable (String tables)查找第一個表的名稱,該表是可編輯的。
參數 tables
String
*表格清單
回報 String
第一個表
getAttachedDbs
public List<Pair<String, String>> getAttachedDbs ()通過在數據庫上執行“實用化數據庫_列表”,返回所有附加數據庫的完整路徑名列表,包括主數據庫。
回報 List<Pair<String, String>>
如果數據庫未打開,則爲ArrayList(數據庫名稱、數據庫文件路徑)或NULL。
最大尺寸
加進API一級
public long getMaximumSize ()返回數據庫可能增長到的最大大小。
回報 long
新的最大數據庫大小
getPageSize
加進API一級
public long getPageSize ()返回當前數據庫頁大小(以字節爲單位)。
回報 long
數據庫頁大小,以字節爲單位
getPath
加進API一級
public String getPath ()獲取數據庫文件的路徑。
回報 String
數據庫文件的路徑。
getSyncedTables
加進API一級
不受歡迎空氣污染指數第15級public Map<String, String> getSyncedTables ()
API級別15中不推薦此方法。
此方法不再有任何有用的用途,已被廢棄。不受歡迎。
回報 Map<String, String>
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
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
public boolean isDatabaseIntegrityOk ()在給定數據庫(和所有附加數據庫)上運行“務實完整性檢查”,如果給定數據庫(及其所有附加數據庫)通過完整性檢查,否則返回true。
如果結果爲false,則此方法將記錄完整性_CHECK命令執行時報告的錯誤。
請注意,數據庫上的“務實完整性檢查”可能需要很長時間。
回報 boolean
如果給定數據庫(及其所有附加數據庫)通過完整性檢查,則爲true,否則爲false。
isDbLockedByCurrentThread
加進API一級
public boolean isDbLockedByCurrentThread ()如果當前線程持有到數據庫的活動連接,則返回true。
此方法的名稱來自與數據庫的活動連接意味着線程在數據庫上持有實際鎖的時間。現在,不再存在真正的“數據庫鎖”,儘管如果線程無法獲得執行特定操作的數據庫連接,則可能會阻塞。
回報 boolean
如果當前線程持有到數據庫的活動連接,則爲true。
isDbLockedOtherThread
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。
另見:
標記表同步
加進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
如果無法打開數據庫 開放數據庫
public static SQLiteDatabase openDatabase (File path, SQLiteDatabase.OpenParams openParams)根據指定的
OpenParams
參數 path
File
打開和/或創建數據庫文件的路徑。重要:文件應從絕對路徑或使用
Context.getDatabasePath(String)
。這個值絕不能是null
.openParams
SQLiteDatabase.OpenParams
*用於打開的配置參數SQLiteDatabase
這個值絕不能是null
.
回報 SQLiteDatabase
新打開的數據庫
拋出 SQLiteException
如果無法打開數據庫 開放數據庫
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
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不同步,有關更多細節,請參閱文檔。
另見:
查詢
加進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不同步,有關更多細節,請參閱文檔。
另見:
查詢
加進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不同步,有關更多細節,請參閱文檔。
另見:
查詢
加進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不同步,有關更多細節,請參閱文檔。
另見:
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不同步,有關更多細節,請參閱文檔。
另見:
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不同步,有關更多細節,請參閱文檔。
另見:
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
public void setCustomAggregateFunction (String functionName, BinaryOperator<String> 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
public void setCustomScalarFunction (String functionName, UnaryOperator<String> 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
如果無法註冊自定義函數。 另見:
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
public void setLockingEnabled (boolean lockingEnabled)
API級別16中不推薦此方法。
這個方法現在什麼也不做。不要用。通過使用關鍵部分周圍的鎖來控制SQLiteDatabase是否使線程安全。這是相當昂貴的,所以如果您知道您的DB將只由單個線程使用,那麼您應該將其設置爲false。默認值爲真。
參數 lockingEnabled
boolean
*設置爲true以啓用鎖,否則爲false
setMaxSqlCacheSize
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
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。
產量安全
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()
.