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<Pair<StringString>> getAttachedDbs()

通過在數據庫上執行“實用化數據庫_列表”,返回所有附加數據庫的完整路徑名列表,包括主數據庫。

long getMaximumSize()

返回數據庫可能增長到的最大大小。

long getPageSize()

返回當前數據庫頁大小(以字節爲單位)。

String getPath()

獲取數據庫文件的路徑。

Map<StringString> 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

常數

衝突中止

加進空氣污染指數第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()。不能在只讀數據庫中使用預寫日誌記錄,因此,如果數據庫是隻讀的,則忽略此標誌的值。

 

另見:

常數: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模式。

另見:

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模式。

另見:

終末交易

加進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語句,請使用以下任一語句。

對於UPDATE語句,請使用以下任何一種方法。

對於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

加進空氣污染指數第11級

public List<Pair<StringString>> getAttachedDbs ()

通過在數據庫上執行“實用化數據庫_列表”,返回所有附加數據庫的完整路徑名列表,包括主數據庫。

 

回報
List<Pair<StringString>> 如果數據庫未打開,則爲ArrayList(數據庫名稱、數據庫文件路徑)或NULL。

 

最大尺寸

加進API一級

public long getMaximumSize ()

返回數據庫可能增長到的最大大小。

 

回報
long 新的最大數據庫大小

 

getPageSize

加進API一級

public long getPageSize ()

返回當前數據庫頁大小(以字節爲單位)。

 

回報
long 數據庫頁大小,以字節爲單位

 

getPath

加進API一級

public String getPath ()

獲取數據庫文件的路徑。

 

回報
String 數據庫文件的路徑。

 

getSyncedTables

加進API一級 
不受歡迎空氣污染指數第15級

public Map<StringString> getSyncedTables ()

 

API級別15中不推薦此方法。
此方法不再有任何有用的用途,已被廢棄。

不受歡迎。

 

回報
Map<StringString>

 

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。

 

另見:

標記表同步

加進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不同步,有關更多細節,請參閱文檔。

 

另見:

查詢

加進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不同步,有關更多細節,請參閱文檔。

 

另見:

查詢

加進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不同步,有關更多細節,請參閱文檔。

 

另見:

查詢

加進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不同步,有關更多細節,請參閱文檔。

 

另見:

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不同步,有關更多細節,請參閱文檔。

 

另見:

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不同步,有關更多細節,請參閱文檔。

 

另見:

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<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

在Android R中添加

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

加進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().

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章