隨記 SQLite


Random

張貼者:2009/3/1 上午12:24Yichang Wu   [ 已更新 2009/3/1 上午12:25 ]

http://www.carlj.ca/2007/12/16/selecting-random-records-with-sql/
SELECT Field1, ..., Field2
FROM Table1
ORDER BY Random()
LIMIT 1

SQLite 自動遞增數值

張貼者:2008/12/9 上午12:43Yichang Wu   [ 已更新 2008/12/9 上午12:44 ]

Create Table 時參數
`noid`   INTEGER   PRIMARY   KEY   AUTOINCREMENT
SQLite 預設會有個 rowid , 但不能存取
加入一個新的 `id` INTEGER   PRIMARY   KEY   AUTOINCREMENT
rowid 就會不見(隱藏!?)
參考:Google關鍵字搜尋 ..... 忘了記。

SQLite DateTime 字串處理

張貼者:2008/12/9 上午12:40Yichang Wu   [ 已更新 2008/12/9 上午12:42 ]

msdn上對iso 8601的描述:(http://msdn.microsoft.com/zh-cn/library/ms187819.aspx)
DateTime 字串示例:
* 2008-12-01T16:18:13
* 2008-12-01T16:18:13.487

用data_time.ToString("s");這種方法轉換成iso 8601標準字符串格式
如下:
string sql="insert into [table] (date_time)" values('" + date_time.ToString("s" ) + "'";

參考:

C# 使用 System.Data.SQLite

張貼者:2008/12/9 上午12:32Yichang Wu   [ 已更新 2008/12/9 上午12:34 ]

System.Data.SQLite
http://sqlite.phxsoftware.com/

檔案下載後, 解壓縮, 從中取得 System.Data.SQLite.dll

以下範例來自:http://www.javaeye.com/topic/114055
using
using System.Data.SQLite;

Connection和Command:
private SQLiteConnection conn; 
private SQLiteCommand cmd;

連接db:
conn = new SQLiteConnection("Data Source=c:\\test.db");  
conn.Open();  

INSERT/UPDATE:
cmd = conn.CreateCommand();  
cmd.CommandText = "INSERT INTO user(email,name) VALUES ('email','name')";  
cmd.ExecuteNonQuery();  

cmd.CommandText = "UPDATE userSET name = 'Codelicious' WHERE ID = 1";  
cmd.ExecuteNonQuery();  

SELECT:
cmd.CommandText = "SELECT ID, name FROM user";  
SQLiteDataReader reader = cmd.ExecuteReader();  
if (reader.HasRows)  
             {  
                 while (reader.Read())  
                {  
                    Console.WriteLine("ID: " + reader.GetInt16(0));  
                     Console.WriteLine("name: " + reader.GetString(1));  
                 }  
             }  

SQLite Manager

張貼者:2008/12/9 上午12:30Yichang Wu   [ 已更新 2008/12/9 上午12:31 ]


現在發現真的很多軟體用這一套做為資料庫的管理

像google 的android底層是用sqlite

firefox 也開始改用sqlite 做為內部的資料庫引擎

也因此firefox有一個延伸的add-on

https://addons.mozilla.org/en-US/firefox/addon/5817

功能跟sqlite browser一樣 或者說 是sqlite browser的網頁版(連圖示都一樣..=_=)

sqlite browser的網頁已經一年多沒更新了

參考:

簡介 SQLite

張貼者:2008/12/9 上午12:28Yichang Wu   [ 已更新 2008/12/9 上午12:42 ]

SQL資料庫系統是程式設計師的好幫手,對於大量的資料處理上是絕對不可或缺的。不過,如果稍微少一點的資料呢?

比如說:

    * 你有幾千筆的資料,以後也不太會增加。
    * 你的程式可能只有單機使用,
    * 就算可以上網,你也不想就為了這個程式來架一個資料庫。
    * 這個應用程式沒有多人一起使用的需求。

諸如此類的狀況,也許您也曾經遇到過。通常您有幾種作法:

    * 累一點,在同一台機器上架個資料庫系統。
    * 找個小型的資料庫系統,像是GDBM,Windows的Registry,Access,或是乾脆用CSV格式的文字檔。

第一種方法,對於使用者來說可能會是個大問題。因為不是每個使用者都懂得,而且願意架設一個資料庫系統在自己的電腦上。甚至他的電腦夠不夠力跑一個資料庫 系統都是問題。第二種方法,是許多人常用的方式,尤其在Windows系統下面,許多人常常用Registry來作為軟體的資料庫。不過,話說回來,少掉 了SQL的幫助,很多資料處理的功能都要自己來作,對於程式設計師來說真的是很累。

其實,還有另外一種折衷的方案,就是使用SQLite這樣的嵌入式資料庫。對於程式設計師來說,使用這樣的資料庫,與使用一般的SQL資料庫差異不大。一 般的SQL92語法都可以使用。而且不用架設任何系統起來,只要在編譯程式時把SQLite的程式庫一併編入。

而且SQLite的資料庫都是單一的檔案。 所以,要將軟體安裝到使用者的電腦上是再簡單不過的事情。

下面就來看看SQLite網站上對於這個嵌入式資料庫的介紹: SQLite是一個很小的C語言程式庫。這個程式庫本身就完全包含資料庫引擎的功能,而且可以嵌入至其他程式中,完全不用額外的設定。其特性如下:

    * 支援ACID (Atomic, Consistent, Isolated, Durable) 交易。
    * 零組態設定(Zero-configuration),無須管理者的設定及管理
    * 支援大部分SQL92的語法
    * 資料庫存在於一個單一的檔案中
    * 資料庫系統所在機器的位元組順序(Byte order)無關。
    * 支援大小至2 terabytes (2^41 bytes)
    * 極小的記憶體需求:小於3萬行的C語言程式碼。小於250KB的程式空間
    * 大部分的資料庫操作皆快於一般流行的資料庫系統
    * 簡單易用的API。
    * 支援TCL。也有其他語言的支援可用。
    * 註解詳細的程式碼,以及超過90%的測試。
    * 程式庫自己包含完整的功能,無須其他額外的程式或程式庫
    * 程式碼版權為public domain。任何用途皆可免費使用

在與其他的開發工具連結方面,SQLite幾乎可以在目前所有的主流開發工具,平台,程式語言上面使用:

    * Ada
    * Anubis
    * BASIC
    * C/C++
    * Ch
    * Clipper
    * Common Lisp
    * COM Wrapper/VB DLLs
    * D language
    * ODBC
    * Pascal/Delphi
    * Director
    * eyuyan
    * Ewe
    * Flash
    * Forth
    * Fortran
    * Haskell
    * J
    * Java
    * JavaScript
    * Lua
    * mIRC script language
    * .Net framework
    * newLisp
    * Objective-C
    * Perl
    * PHP
    * Pike
    * Python
    * Rebol
    * Rexx
    * Ruby
    * S-lang
    * Scheme
    * Smalltalk
    * Tcl/Tk
    * QT

而在作業系統支援上,除了目前大部分的PC/NB所使用的作業系統,如Windows, Linux, FreeBSD, OS/2 ...等。在嵌入式系統上也有支援,如Embedded系統使用的Linux, Win CE及Symbian等等。

參考:

1-6 of 6