sqlite數據存儲
SQLite是輕量級嵌入式資料庫引擎,它支持 SQL 語言,並且只利用很少的內存就有很好的性能。此外它還是開源的,任何人都可以使用它。許多開源項目((Mozilla, PHP, Python)都使用了 SQLiteSQLite 由以下幾個組件組成:SQL 編譯器、內核、後端以及附件。SQLite 通過利用虛擬機和虛擬資料庫引擎
(VDBE),使調試、修改和擴展 SQLite 的內核變得更加方便。
1. Android 集成了 SQLite 資料庫 Android 在運行時(run-time)集成了 SQLite,所以每個 Android 應用程序都可以使用 SQLite 資料庫。
2. 資料庫存儲在 data/< 項目文件夾 >/databases/ 下。 Android 開發中使用 SQLite 資料庫 Activites 可以通過 Content Provider 或者 Service 訪問一個資料庫。
3. Android 提供了 SQLiteOpenHelper 創建一個資料庫,只要繼承 SQLiteOpenHelper 類,就可以輕松的創建資料庫。SQLiteOpenHelper 類根據開發應用程序的需要,封裝了創建和更新資料庫使用的邏輯。
㈡ centos sqlite資料庫默認存儲地址
你要找的 sqlite資料庫 文件,默認情況下存儲在這個位置C:Documents and SettingsAdministrator.androidavd你的虛擬機名字.avd/userdata.img這個鏡像文件中。如果你想不打開虛擬機就找到你的資料庫文件,可以嘗試用 ultraiso 等能夠處理鏡像文件的工具打開這個文件,我沒有試過。不過這樣做貌似是沒有什麼意義的、當虛擬機載入這個鏡像中的信息並成功啟動後,你可以理解為你的SQLite資料庫文件被讀入到了內存中。但是你所做的任何修改都會被保存在上述的 鏡像文件中,所以實質上你的資料庫文件還是存放在硬碟中的,不知道這樣說你能不能理解。虛擬機,被稱為虛擬機就是因為它利用了你當前計算機的硬體資源,模擬出來一個 目的主機,一般情況下你是不能也不應該通過除了虛擬機本身的方式來讀取或修改存儲在它內部的數據的。
㈢ sqlite資料庫中能不能存放布爾類型的數據
sqlite資料庫中不支持布爾型。
SQLite將數據值的存儲劃分為以下幾種存儲類型:
NULL:
表示該值為NULL值。
INTEGER:
無符號整型值。
REAL:
浮點值。
TEXT:
文本字元串,存儲使用的編碼方式為UTF-8、UTF-16BE、UTF-16LE。
BLOB:
存儲Blob數據,該類型數據和輸入數據完全相同。
由於SQLite採用的是動態數據類型,而其他傳統的關系型資料庫使用的是靜態數據類型,即欄位可以存儲的數據類型是在表聲明時即以確定的,因此它們之間在數據存儲方面還是存在著很大的差異。在SQLite中,存儲分類和數據類型也有一定的差別,如INTEGER存儲類別可以包含6種不同長度的Integer數據類型,然而這些INTEGER數據一旦被讀入到內存後,SQLite會將其全部視為佔用8個位元組無符號整型。因此對於SQLite而言,即使在表聲明中明確了欄位類型,我們仍然可以在該欄位中存儲其它類型的數據。然而需要特別說明的是,盡管SQLite為我們提供了這種方便,但是一旦考慮到資料庫平台的可移植性問題,我們在實際的開發中還是應該盡可能的保證數據類型的存儲和聲明的一致性。除非你有極為充分的理由,同時又不再考慮資料庫平台的移植問題,在此種情況下確實可以使用SQLite提供的此種特徵。
㈣ sqlite資料庫有啥用。資料庫是幹啥的
資料庫:按照數據結構來組織、存儲和管理數據的倉庫,通俗的講就是按照一定的結構來存儲數據的。
資料庫(database,DB):特點 長期存儲計算機內,有組織(具備一定的結構),可共享,數據集合。
sqlite:輕型的資料庫,可以直接嵌入某款應用中,佔用內存較小,滿足對數據的存儲,查詢需要。
㈤ SQLite資料庫存儲,怎樣創建一個的資料庫
如果用Navicat的話,直接新建鏈接,輸入鏈接名,選擇新建資料庫文件,指定一個db資料庫文件路徑即可;
如果用程序創建的話,會調用sqlite提供的庫文件,不同語言的寫法上不太一樣,不好舉例
㈥ 如何用SQLite方法做數據儲存
Android提供了5種方式存儲數據: 1、使用SharedPreferences存儲數據; 2、文件存儲數據; 3、SQLite資料庫存儲數據; 4、使用ContentProvider存儲數據; 5、網路存儲數據;
㈦ SQLite數據存儲與轉換問題,怎麼解決
先將api.sqlite改成api.db,然後下載sqlitestudio-2.1.4,免安裝,可以打開下載的資料庫文件了,選中表,右鍵-導出,選擇CSV格式即可,那個格式是可以用EXCEL打開的,我給你導出好了。
㈧ sqlite數據類型有哪些
SQLite 數據類型是一個用來指定任何對象的數據類型的屬性。SQLite 中的每一列,每個變數和表達式都有相關的數據類型。
您可以在創建表的同時使用這些數據類型。SQLite 使用一個更普遍的動態類型系統。在 SQLite 中,值的數據類型與值本身是相關的,而不是與它的容器相關。
SQLite 存儲類
每個存儲在 SQLite 資料庫中的值都具有以下存儲類之一:
存儲類
描述
NULL 值是一個 NULL 值。
INTEGER 值是一個帶符號的整數,根據值的大小存儲在 1、2、3、4、6 或 8 位元組中。
REAL 值是一個浮點值,存儲為 8 位元組的 IEEE 浮點數字。
TEXT 值是一個文本字元串,使用資料庫編碼(UTF-8、UTF-16BE 或 UTF-16LE)存儲。
BLOB 值是一個 blob 數據,完全根據它的輸入存儲。
SQLite 的存儲類稍微比數據類型更普遍。INTEGER 存儲類,例如,包含 6 種不同的不同長度的整數數據類型。
SQLite 親和(Affinity)類型
SQLite支持列的親和類型概念。任何列仍然可以存儲任何類型的數據,當數據插入時,該欄位的數據將會優先採用親緣類型作為該值的存儲方式。SQLite目前的版本支持以下五種親緣類型:
親和類型
描述
TEXT 數值型數據在被插入之前,需要先被轉換為文本格式,之後再插入到目標欄位中。
NUMERIC 當文本數據被插入到親緣性為NUMERIC的欄位中時,如果轉換操作不會導致數據信息丟失以及完全可逆,那麼SQLite就會將該文本數據轉換為INTEGER或REAL類型的數據,如果轉換失敗,SQLite仍會以TEXT方式存儲該數據。對於NULL或BLOB類型的新數據,SQLite將不做任何轉換,直接以NULL或BLOB的方式存儲該數據。需要額外說明的是,對於浮點格式的常量文本,如"30000.0",如果該值可以轉換為INTEGER同時又不會丟失數值信息,那麼SQLite就會將其轉換為INTEGER的存儲方式。
INTEGER 對於親緣類型為INTEGER的欄位,其規則等同於NUMERIC,唯一差別是在執行CAST表達式時。
REAL 其規則基本等同於NUMERIC,唯一的差別是不會將"30000.0"這樣的文本數據轉換為INTEGER存儲方式。
NONE 不做任何的轉換,直接以該數據所屬的數據類型進行存儲。
SQLite 親和類型(Affinity)及類型名稱
下表列出了當創建 SQLite3 表時可使用的各種數據類型名稱,同時也顯示了相應的親和類型:
數據類型
親和類型
INT
INTEGER
TINYINT
SMALLINT
MEDIUMINT
BIGINT
UNSIGNED BIG INT
INT2
INT8
INTEGER
CHARACTER(20)
VARCHAR(255)
VARYING CHARACTER(255)
NCHAR(55)
NATIVE CHARACTER(70)
NVARCHAR(100)
TEXT
CLOB
TEXT
BLOB
no datatype specified
NONE
REAL
DOUBLE
DOUBLE PRECISION
FLOAT
REAL
NUMERIC
DECIMAL(10,5)
BOOLEAN
DATE
DATETIME
NUMERIC
㈨ 誰有關於 SQLite 的數據在文件中如何存儲以及索引操作的詳細原理介紹嗎
鏈接不能給你呀。因為度娘不允許 。
應用程序通過sqlite3_open API來打開資料庫,該函數的一個參數為資料庫文件的名稱。SQLite內部命名為main資料庫(除了臨時資料庫和內存資料庫)。SQLite對每一個資料庫都創建一個獨立的文件。
在SQLite內部,數據文件名不是資料庫名。SQLite對應用程序的每一個連接都維護著一個單獨的臨時資料庫(temp資料庫),臨時資料庫存臨時對象,例如:表以及相應的索引。這些臨時對象僅僅對同一個連接可見(對同一個線程,進程的其它連接是不可見的),SQLite存儲臨時資料庫到一個單獨的臨時文件中,當應用程序關閉對main資料庫的連接時,就刪除臨時文件。
㈩ ios中sqlite怎麼存儲數據的
SQLite3是嵌入在iOS中的關系型資料庫,對於存儲大規模的數據很有效。SQLite3使得不必將每個對象都加到內存中。
基本操作:
(1)打開或者創建資料庫
sqlite3 *database; int result = sqlite3_open("/path/databaseFile", &database);
如果/path/databaseFile不存在,則創建它,否則打開它。如果result的值是SQLITE_OK,則表明我們的操作成功。
注意上述語句中資料庫文件的地址字元串前面沒有@字元,它是一個C字元串。將NSString字元串轉成C字元串的方法是:
const char *cString = [nsString UTF8String];
(2)關閉資料庫
sqlite3_close(database);
(3)創建一個表格
char *errorMsg; const char *createSQL = "CREATE TABLE IF NOT EXISTS PEOPLE (ID INTEGER PRIMARY KEY AUTOINCREMENT, FIELD_DATA TEXT)"; int result = sqlite3_exec(database, createSQL, NULL, NULL, &errorMsg);
執行之後,如果result的值是SQLITE_OK,則表明執行成功;否則,錯誤信息存儲在errorMsg中。
sqlite3_exec這個方法可以執行那些沒有返回結果的操作,例如創建、插入、刪除等。
(4)查詢操作
NSString *query = @"SELECT ID, FIELD_DATA FROM FIELDS ORDER BY ROW"; sqlite3_stmt *statement; int result = sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, nil);
如果result的值是SQLITE_OK,則表明准備好statement,接下來執行查詢:
while (sqlite3_step(statement) == SQLITE_ROW) { int rowNum = sqlite3_column_int(statement, 0); char *rowData = (char *)sqlite3_column_text(statement, 1); NSString *fieldValue = [[NSString alloc] initWithUTF8String:rowData]; // Do something with the data here } sqlite3_finalize(statement);
使用過其他資料庫的話應該很好理解這段語句,這個就是依次將每行的數據存在statement中,然後根據每行的欄位取出數據。
(5)使用約束變數
實際操作時經常使用叫做約束變數的東西來構造SQL字元串,從而進行插入、查詢或者刪除等。
例如,要執行帶兩個約束變數的插入操作,第一個變數是int類型,第二個是C字元串:
char *sql = "insert into oneTable values (?, ?);"; sqlite3_stmt *stmt; if (sqlite3_prepare_v2(database, sql, -1, &stmt, nil) == SQLITE_OK) { sqlite3_bind_int(stmt, 1, 235); sqlite3_bind_text(stmt, 2, "valueString", -1, NULL); } if (sqlite3_step(stmt) != SQLITE_DONE) NSLog(@"Something is Wrong!"); sqlite3_finalize(stmt);
這里,sqlite3_bind_int(stmt, 1, 235);有三個參數:
第一個是sqlite3_stmt類型的變數,在之前的sqlite3_prepare_v2中使用的。
第二個是所約束變數的標簽index。
第三個參數是要加的值。
有一些函數多出兩個變數,例如
sqlite3_bind_text(stmt, 2, "valueString", -1, NULL);
這句,第四個參數代表第三個參數中需要傳遞的長度。對於C字元串來說,-1表示傳遞全部字元串。
第五個參數是一個回調函數,比如執行後做內存清除工作。