首页 > 数据库 > SQLite > 正文

使用TCL 进行SQLite开发

2020-02-10 17:55:14
字体:
来源:转载
供稿:网友

Programming sqlite with Tcl

2005/10/26 by coopermaa

Summary

什麼樣的資料庫稱得上是「小巧(small)、可內嵌(embeddable)而且支援 SQL 查詢語言的資料庫」?

答案是:sqlite,一套 Open Source 的關聯式資料庫。

sqlite 是一個「麻雀雖小卻五臟俱全」的資料庫,因為 sqlite 是一個體積僅僅 250KB 左右的 C Library,很適合內嵌的應用。sqlite 支援 SQL92 Standard,而且程式介面非常簡單,標準的程式介面除了 C 語言外,還有 Tcl 語言(其他語言也有支援,請上網查詢)。

「簡單易學,而且可嵌入應用程式裏」,這不也正是 Tcl 的特性嗎?所以,我覺得 Tcl 和 sqlite 實在是天生一對。

這份文件,是為了想以 Tcl sqlite 寫資料庫 AP 的 Tclers 而整理的。我希望,這篇可以幫助你迅速上手學會 sqlite,讓你的程式,搖身一變,成為資料庫應用程式。我假設你熟悉 Tcl,修過資料庫系統課程,知道資料表正規化的原理和 SQL Statements(Select, Insert Into, Update, Delete, Create Table, Drop Table 等 Statements)。

Tcl sqlite 五分鐘上手

六分鐘護一生,要讓 Tcl 和 sqlite 牽起手,從此快樂生活,只要五分鐘!不信的話,您現在可自個兒計算一下。

Opening and Closing database

要使用 sqlite 資料庫,你唯一的任務就是要記住 sqlite 這一個指令。看個例子:

這個範例會開啟 scores.db 這個資料庫檔,日後程式要存取 scores.db 的內容,全靠 db 這個新產生出來的指令,利用它來執行 SQL Statement 的工作(Select, Insert Into, Update, Delete, Create Table, Drop Table 等 SQL Statements),我們下一段就會看到一些範例。

要閉關資料庫,也是透過 db 指令:

db close ;# this will close scores.db

Executing SQL Statement

所有你想執行的 SQL Statement,全部丟給 eval method 就對了!

例如,我們要在 scores.db 資料庫建一張 scores table,只要將 CREATE TABLE 指令,丟給 db eval 去執行:

db eval {
CREATE TABLE scores (
id TEXT PRIMARY KEY,
name TEXT,
chinese NUMERIC,
english NUMERIC,
math NUMERIC
)
}

利用 Insert Into 指令,丟個幾筆資料到 scores table:

不小心把分數計錯了,得用 UPDATE 指令,把人家的分數更新回正確的才行:

我們在寫 Tcl Application 時,工作就是要組出正確的 SQL Statement,好丟給 db eval 去執行。這時怎麼組出正確的字串、引號有沒有配對正確,就是一件需要細心處理的事情:

有時候,你得祭出 Transaction 這個法寶,讓自己的程式看起來高竿一點,唔,我是說「讓一系列的資料庫操作(a sequence of database operations),保證它們全部執行,否則,只要其中一步有錯,就回復到原始狀態(Rollback)」 :

eval method 可以一次執行多個 SQL Statements,只要每個 SQL Statement 之間以分號隔開,如範例所示。

Fetching Records From Database

寫資料庫 AP,最常用到的指令,應該非 SELECT 指令莫屬了。

要處理 SELECT 指令傳回的資料,最簡單的形式是:

它會將結果按欄位順序,組成一個 list 傳回:

A0001 coopermaa 100 100 100

第二種形式是這樣:

上列 Script 執行後,SELECT 指令所篩選出的每一筆記錄,都會放進 data 陣列裏,然後每筆記錄都會執行一次 parray data 這行指令印出陣列的內容。 請看這段 Script 的輸出:

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选