sqlite存儲格式
㈠ sqlite使用,只保存30天以內的數據,日期格式是yy-mm-dd,把30天以前的數據刪掉
db.execSQL("DELETE FROM history WHERE date<"當前日期);
當前日期要計算成一個月之前的日期
㈡ sqlite中如何存儲GUID類型的數據
SQLite實際上只有5種數據類型,NULL,INTEGER,REAL,TEXT,BLOB,GUID實際上就是BLOB,也就是二進制,用二進制的方式來保存的,只量SQLite Expert通過判斷是GUID類型顯示成了GUID的格式。GUID的二進制格式也是有講究的,否則直接ToString()也得不到正確的二進制格式。
㈢ java存Sqlite時間格式
public class CloudLed {
boolean m_isOn;
Camera m_Camera;
public boolean getIsOn() { return m_isOn; }
public CloudLed()
{
m_isOn = false;
}
public void turnOn()
{
if(!m_isOn)
{
m_isOn = true;
try
{
㈣ 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中存儲日期和時間應選擇什麼數據類型
SQLite的數據分為NULL、BLOB、INTEGER、REAL、TEXT五種類型,存儲日期和時間的欄位 s可以使用數字或者文本
㈥ SQLite數據存儲與轉換問題,怎麼解決
先將api.sqlite改成api.db,然後下載sqlitestudio-2.1.4,免安裝,可以打開下載的資料庫文件了,選中表,右鍵-導出,選擇CSV格式即可,那個格式是可以用EXCEL打開的,我給你導出好了。
㈦ 請問Sqlite 中 string和text 兩種數據類型有什麼區別
string是字元串,你向這個類型的數據位置寫字元串的時候,傳遞的是什麼字元串類型,它就以什麼字元串類型保持。
text你可以理解為在庫里建了個txt文檔,向這個文檔里寫文字,它會以這個數據類型所設置的編碼進行存儲。
假設sqlite庫中,A1是string,B1是text。我用VB向A1中寫「abc」,向B1中寫「abc」,那麼a1中實際放的是Unicode格式的「abc」(VB默認的字元串格式為Unicode),而B1中放的是UTF-8格式的「abc」
㈧ 請教sqlite資料庫中文亂碼的問題
Sqlite默認保存數據是用UTF8格式,而現有程序開發工具都是默認GB2312的格式,所以你編程寫的中文不轉碼直接寫到庫里後,用任何資料庫工具看肯定都是亂碼。但是讀出來之後仍然是GB2312,所以顯示正常。反之如果你用資料庫工具寫中文,則默認存UTF
㈨ 如何設置sqlite
您好!很高興為你解答此類問題,具體方法請看以下:
1.SQLite簡介
SQLite是一款輕型的資料庫,是遵守ACID的關聯式資料庫管理系統,它的設計目標是嵌入 式的,而且目前已經在很多嵌入式產品中使用了它,它佔用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。
它能夠支持 Windows/linux/Unix等等主流的操作系統,同時能夠跟很多程序語言相結合,比如Tcl、PHP、Java、C++、.Net等,還有ODBC介面,同樣比起 Mysql、PostgreSQL這兩款開源世界著名的資料庫管理系統來講,它的處理速度比他們都快。
2.SQLite的特點:
輕量級
SQLite和C/S模式的資料庫軟體不同,它是進程內的資料庫引擎,因此不存在資料庫的客戶端和伺服器。使用SQLite一般只需要帶上它的一個動態 庫,就可以享受它的全部功能。
而且那個動態庫的尺寸也挺小,以版本3.6.11為例,Windows下487KB、Linux下347KB。
不需要"安裝"
SQLite的核心引擎本身不依賴第三方的軟體,使用它也不需要"安裝"。有點類似那種綠色軟體。
單一文件
資料庫中所有的信息(比如表、視圖等)都包含在一個文件內。這個文件可以自由復制到其它目錄或其它機器上。
跨平台/可移植性
除了主流操作系統 windows,linux之後,SQLite還支持其它一些不常用的操作系統。
弱類型的欄位
同一列中的數據可以是不同類型
開源
3.SQLite數據類型
一般數據採用的固定的靜態數據類型,而SQLite採用的是動態數據類型,會根據存入值自動判斷。SQLite具有以下五種常用的數據類型:
NULL: 這個值為空值
VARCHAR(n):長度不固定且其最大長度為 n 的字串,n不能超過 4000。
CHAR(n):長度固定為n的字串,n不能超過 254。
INTEGER: 值被標識為整數,依據值的大小可以依次被存儲為1,2,3,4,5,6,7,8.
REAL: 所有值都是浮動的數值,被存儲為8位元組的IEEE浮動標記序號.
TEXT: 值為文本字元串,使用資料庫編碼存儲(TUTF-8, UTF-16BE or UTF-16-LE).
BLOB: 值是BLOB數據塊,以輸入的數據格式進行存儲。如何輸入就如何存儲,不改 變格式。
DATA :包含了 年份、月份、日期。
TIME: 包含了 小時、分鍾、秒。
二.SQLiteDatabase的介紹
Android提供了創建和是用SQLite資料庫的API。SQLiteDatabase代表一個資料庫對象,提供了操作資料庫的一些方法。在Android的SDK目錄下有sqlite3工具,我們可以利用它創建資料庫、創建表和執行一些SQL語句。下面是SQLiteDatabase的常用方法。
SQLiteDatabase的常用方法
方法名稱
方法表示含義
openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory)
打開或創建資料庫
insert(String table,String nullColumnHack,ContentValues values)
插入一條記錄
delete(String table,String whereClause,String[] whereArgs)
刪除一條記錄
query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy)
查詢一條記錄
update(String table,ContentValues values,String whereClause,String[] whereArgs)
修改記錄
execSQL(String sql)
執行一條SQL語句
close()
關閉資料庫
Google公司命名這些方法的名稱都是非常形象的。例如openOrCreateDatabase,我們從字面英文含義就能看出這是個打開或創建資料庫的方法
1、打開或者創建資料庫
在Android 中使用SQLiteDatabase的靜態方法openOrCreateDatabase(String path,SQLiteDatabae.CursorFactory factory)打開或者創建一個資料庫。
它會自動去檢測是否存在這個資料庫,如果存在則打開,不存在則創建一個資料庫;創建成功則返回一個SQLiteDatabase對象,否則拋出異常FileNotFoundException。
下面是創建名為「stu.db」資料庫的代碼:
openOrCreateDatabase(String path,SQLiteDatabae.CursorFactory factory)
參數1 資料庫創建的路徑
參數2 一般設置為null就可以了
eg: db=SQLiteDatabase.openOrCreateDatabase("/data/data/com.ling.db/databases/stu.db",null);
2、創建表
創建一張表的步驟很簡單:
編寫創建表的SQL語句
調用SQLiteDatabase的execSQL()方法來執行SQL語句
下面的代碼創建了一張用戶表,屬性列為:id(主鍵並且自動增加)、sname(學生姓名)、snumber(學號)
View Code
3、插入數據
ContentValues 是一種存儲的機制,常用於資料庫的操作。只能存儲基本類型。
插入數據有兩種方法:
①SQLiteDatabase的insert(String table,String nullColumnHack,ContentValues values)方法,
參數1 表名稱,
參數2 空列的默認值
參數3 ContentValues類型的一個封裝了列名稱和列值的Map;
View Code
②編寫插入數據的SQL語句,直接調用SQLiteDatabase的execSQL()方法來執行
View Code
4、刪除數據
刪除數據也有兩種方法:
①調用SQLiteDatabase的delete(String table,String whereClause,String[] whereArgs)方法
參數1 表名稱
參數2 刪除條件
參數3 刪除條件值數組
View Code
②編寫刪除SQL語句,調用SQLiteDatabase的execSQL()方法來執行刪除。
View Code
5、修改數據
修改數據有兩種方法:
①調用SQLiteDatabase的update(String table,ContentValues values,String whereClause, String[] whereArgs)方法
參數1 表名稱
參數2 跟行列ContentValues類型的鍵值對Key-Value
參數3 更新條件(where字句)
參數4 更新條件數組
View Code
②編寫更新的SQL語句,調用SQLiteDatabase的execSQL執行更新。
View Code
6、查詢數據
在Android中查詢數據是通過Cursor類來實現的,當我們使用SQLiteDatabase.query()方法時,會得到一個Cursor對象,Cursor指向的就是每一條數據。它提供了很多有關查詢的方法,具體方法如下:
public Cursor query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy,String limit);
各個參數的意義說明:
參數table:表名稱
參數columns:列名稱數組
參數selection:條件字句,相當於where
參數selectionArgs:條件字句,參數數組
參數groupBy:分組列
參數having:分組條件
參數orderBy:排序列
參數limit:分頁查詢限制
參數Cursor:返回值,相當於結果集ResultSet
Cursor是一個游標介面,提供了遍歷查詢結果的方法,如移動指針方法move(),獲得列值方法getString()等.
Cursor游標常用方法
方法名稱
方法描述
getCount()
獲得總的數據項數
isFirst()
判斷是否第一條記錄
isLast()
判斷是否最後一條記錄
moveToFirst()
移動到第一條記錄
moveToLast()
移動到最後一條記錄
move(int offset)
移動到指定記錄
moveToNext()
移動到下一條記錄
moveToPrevious()
移動到上一條記錄
getColumnIndexOrThrow(String columnName)
根據列名稱獲得列索引
getInt(int columnIndex)
獲得指定列索引的int類型值
getString(int columnIndex)
獲得指定列縮影的String類型值
下面就是用Cursor來查詢資料庫中的數據,具體代碼如下:
View Code
7、刪除指定表
編寫插入數據的SQL語句,直接調用SQLiteDatabase的execSQL()方法來執行
View Code
三. SQLiteOpenHelper
該類是SQLiteDatabase一個輔助類。這個類主要生成一 個資料庫,並對資料庫的版本進行管理。
當在程序當中調用這個類的方法getWritableDatabase()或者 getReadableDatabase()方法的時候,如果當時沒有數據,那麼Android系統就會自動生成一個資料庫。
SQLiteOpenHelper 是一個抽象類,我們通常需要繼承它,並且實現裡面的3個函數:
1.onCreate(SQLiteDatabase)
在資料庫第一次生成的時候會調用這個方法,也就是說,只有在創建資料庫的時候才會調用,當然也有一些其它的情況,一般我們在這個方法里邊生成資料庫表。
2. onUpgrade(SQLiteDatabase,int,int)
當資料庫需要升級的時候,Android系統會主動的調用這個方法。一般我們在這個方法里邊刪除數據表,並建立新的數據表,當然是否還需要做其他的操作,完全取決於應用的需求。
3. onOpen(SQLiteDatabase):
這是當打開資料庫時的回調函數,一般在程序中不是很常使用。
寫了這么多,改用用實際例子來說明上面的內容了。
下面這個操作資料庫的實例實現了創建資料庫,創建表以及資料庫的增刪改查的操作。
該實例有兩個類:
com.ling.testSQLite 調試類
com.ling.testSQLiteDb 資料庫輔助類
SQLiteActivity.java
View Code
StuDBHelper.java
View Code
main.xml
View Code
程序運行的效果圖:
使用adb命令查看資料庫:
1.在命令行窗口輸入adb shell回車,就進入了Linux命令行,現在就可以使用Linux的命令了。
2.ls回車,顯示所有的東西,其中有個data。
3.cd data回車,再ls回車,cd data回車,ls回車後就會看到很多的com................,那就是系統上的應用程序包名,找到你資料庫程序的包名,然後進入。
4.進去後在查看所有,會看到有databases,進入databases,顯示所有就會發現你的資料庫名字,這里使用的是"stu_db"。
5.sqlite3 stu_db回車就進入了你的資料庫了,然後「.schema」就會看到該應用程序的所有表及建表語句。
6.之後就可以使用標準的SQL語句查看剛才生成的資料庫及對數據執行增刪改查了。
註:ls,cd等命令都是linux的基本命令,不了解的同學可以看看有關這方面的資料。
下面介紹幾個在SQLite中常用到的adb命令:
查看
.database 顯示資料庫信息;
.tables 顯示表名稱;
.schema 命令可以查看創建數據表時的SQL命令;
.schema table_name 查看創建表table_name時的SQL的命令;
插入記錄
insert into table_name values (field1, field2, field3...);
查詢
select * from table_name;查看table_name表中所有記錄;
select * from table_name where field1='xxxxx'; 查詢符合指定條件的記錄;
刪除
drop table_name; 刪除表;
drop index_name; 刪除索引;
-------------------------------------------查詢,插入,刪除等操作資料庫的語句記得不要漏了;----------------------------------------
# sqlite3 stu_db
sqlite3 stu_db
SQLite version 3.6.22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .schema
.schema
CREATE TABLE android_metadata (locale TEXT);
CREATE TABLE stu_table(id int,sname varchar(20),sage int,ssex varchar(10)); --->創建的表
sqlite> select * from stu_table;
select * from stu_table;
1|xiaoming|21|male
sqlite>
插入數據
sqlite> insert into stu_table values(2,'xiaohong',20,'female');
插入的數據記得要和表中的屬性一一對應
insert into stu_table values(2,'xiaohong',20,'female');
sqlite> select * from stu_table;
select * from stu_table;
1|xiaoming|21|male
2|xiaohong|20|female --------------> 插入的數據
sqlite>
當點擊修改數據的按鈕時候
sqlite> select * from stu_table;
select * from stu_table;
1|xiaoming|23|male -------------->年齡被修改為23
2|xiaohong|20|female
sqlite>
當點擊刪除數據的按鈕
sqlite> select * from stu_table;
select * from stu_table;
1|xiaoming|23|male id=2的數據已經被刪除
總之,我們可以在代碼中執行資料庫的增刪改查,也可以在adb命令行下實現。不過因為SQLite沒有客戶端,不能直接的查看資料庫變化後的信息,所以常用adb命令行查看資料庫改變後的信息。
前面用到的資料庫,表都是自己在代碼中創建,下面介紹如何使用外部已有的資料庫的方法:
先用SQLite管理工具,sqliteadmin 具體操作很簡單,在這里我就不詳細介紹的了,但有一個地方時候很值得注意的,就是用sqliteadmin創建資料庫的時候,資料庫保存的路徑不能是中文路徑,中文路徑會出現下面的錯誤提示:
我在sqliteadmin 創建好資料庫StuDB,:
將創建好的資料庫在DDMS中點擊導入到data/data/程序的包名/