在某些情況下,會用到資料庫,但又不想要安裝一個龐大的系統在電腦中,
這時可以選擇輕如羽毛的資料庫 SQLite ,
它是免費軟體,重點是他的輕量化讓人感覺不到他的存在,
而且功能具備,實在是一個好用的資料庫。
除了 PHP 會用到,還支援很多語言,可以上官方網站查詢,
我也寫了一篇 TCL 和 SQLite 的應用,這是參考官網的 Documentation 範例所改編,
非常的簡單易學,今天第一次接觸,就發現它的輕便之處,
Command-Line程式也才幾百K,下載回來的DLL也一樣的小,
單一的檔案,直接使用,不用安裝,簡單明瞭,驚嚇到嘴巴合不攏。
有需要的可以下載回來玩玩看。
2008年6月6日 星期五
TCL 和 SQLite 的應用
###=== 載入 下載回來的tclsqlite.DLL
load "C:/Tcl/lib/tclsqlite3.dll" sqlite
###=== 建立新的資料庫
sqlite db1 F:/Andre_kao/testdb.db
db1 eval {CREATE TABLE t1(a int, b text)}
###=== 寫入資料
db1 eval {INSERT INTO t1 VALUES(1,'hello')}
db1 eval {INSERT INTO t1 VALUES(2,'goodbye')}
db1 eval {INSERT INTO t1 VALUES(3,'howdy!')}
set x [db1 eval
{SELECT * FROM t1 ORDER BY a}]
###--- 傳回 1 hello 2 goodbye 3 howdy!
###=== 將資料庫中的資料排序後印出來
db1 eval {SELECT * FROM t1 ORDER BY a} values {
parray values
puts ""
}
###=== 輸出結果
###=== values(*) = a b
###=== values(a) = 1
###=== values(b) = hello
###=== values(*) = a b
###=== values(a) = 2
###=== values(b) = goodbye
###=== values(*) = a b
###=== values(a) = 3
###=== values(b) = howdy!
###=== 請參考 http://www.sqlite.org/tclsqlite.html
load "C:/Tcl/lib/tclsqlite3.dll" sqlite
###=== 建立新的資料庫
sqlite db1 F:/Andre_kao/testdb.db
db1 eval {CREATE TABLE t1(a int, b text)}
###=== 寫入資料
db1 eval {INSERT INTO t1 VALUES(1,'hello')}
db1 eval {INSERT INTO t1 VALUES(2,'goodbye')}
db1 eval {INSERT INTO t1 VALUES(3,'howdy!')}
set x [db1 eval
{SELECT * FROM t1 ORDER BY a}]
###--- 傳回 1 hello 2 goodbye 3 howdy!
###=== 將資料庫中的資料排序後印出來
db1 eval {SELECT * FROM t1 ORDER BY a} values {
parray values
puts ""
}
###=== 輸出結果
###=== values(*) = a b
###=== values(a) = 1
###=== values(b) = hello
###=== values(*) = a b
###=== values(a) = 2
###=== values(b) = goodbye
###=== values(*) = a b
###=== values(a) = 3
###=== values(b) = howdy!
###=== 請參考 http://www.sqlite.org/tclsqlite.html
Metlab DLL 和 TCL 的應用
###### Metlab Code ######
###=== 建立一個 matlab 的檔案,命名為test2
###=== 程式碼如下
function [result] =test3(a,b,c,d)
result = a+b*c-d;
save('D:\MATLAB6p5\work');
return
###=== 在 Matlab 主程式中,選擇..
###=== Start --> Matlab --> Matlab COM Builder --> Matlab COM Builder
###=== 建立 New Project 取名為 test1
###=== Component Name 設為 testAAA
###=== 將 Build debug version 的選項打勾
###=== 執行Build產生 DLL 檔案
###=== 將DLL檔COPY到 C:\Windows\System32 裡面
################################
########### tcl 載入 DLL ###############
package require tcom
::tcom::import test1_1_0.dll
set comUtil [::test1::testAAA]
### 這裡的[::test1::testAAA]
### test1是Matlab 的COM Builder檔名
### testAAA是Matlab 的Component Name,也就是 Class Name
###===--- 執行 DLL
### a 矩陣內容為
### { 1.0 2.0 }
### { 3.0 4.0 }
set a [list [list [expr double(1)] [expr double(2)]] [list [expr double(3)] [expr double(4)]] ]
### b 矩陣內容為
### { 3.0 2.0 }
### { 4.0 5.0 }
set b [list [list [expr double(3)] [expr double(2)]] [list [expr double(4)] [expr double(5)]] ]
### c 矩陣內容為
### { 1.0 2.0 }
### { 3.0 4.0 }
set c [list [list [expr double(1)] [expr double(2)]] [list [expr double(3)] [expr double(4)]] ]
### d 矩陣內容為
### { 4.0 5.0 }
### { 6.0 7.0 }
set d [list [list [expr double(4)] [expr double(5)]] [list [expr double(6)] [expr double(7)]] ]
set retx $comUtil test2 1 retx $a $b $c $d
### 這裡的 $comUtil test2 ....
### test2 是Matlab的M File Name,也就是存放程式碼的檔名
puts $retx
### 上面的$comUtil test2 1 retx.. "1" 表示傳回一個值 由 retx 變數接
### 傳回 {6.0 11.0} {16.0 25.0}
###=== 建立一個 matlab 的檔案,命名為test2
###=== 程式碼如下
function [result] =test3(a,b,c,d)
result = a+b*c-d;
save('D:\MATLAB6p5\work');
return
###=== 在 Matlab 主程式中,選擇..
###=== Start --> Matlab --> Matlab COM Builder --> Matlab COM Builder
###=== 建立 New Project 取名為 test1
###=== Component Name 設為 testAAA
###=== 將 Build debug version 的選項打勾
###=== 執行Build產生 DLL 檔案
###=== 將DLL檔COPY到 C:\Windows\System32 裡面
################################
########### tcl 載入 DLL ###############
package require tcom
::tcom::import test1_1_0.dll
set comUtil [::test1::testAAA]
### 這裡的[::test1::testAAA]
### test1是Matlab 的COM Builder檔名
### testAAA是Matlab 的Component Name,也就是 Class Name
###===--- 執行 DLL
### a 矩陣內容為
### { 1.0 2.0 }
### { 3.0 4.0 }
set a [list [list [expr double(1)] [expr double(2)]] [list [expr double(3)] [expr double(4)]] ]
### b 矩陣內容為
### { 3.0 2.0 }
### { 4.0 5.0 }
set b [list [list [expr double(3)] [expr double(2)]] [list [expr double(4)] [expr double(5)]] ]
### c 矩陣內容為
### { 1.0 2.0 }
### { 3.0 4.0 }
set c [list [list [expr double(1)] [expr double(2)]] [list [expr double(3)] [expr double(4)]] ]
### d 矩陣內容為
### { 4.0 5.0 }
### { 6.0 7.0 }
set d [list [list [expr double(4)] [expr double(5)]] [list [expr double(6)] [expr double(7)]] ]
set retx $comUtil test2 1 retx $a $b $c $d
### 這裡的 $comUtil test2 ....
### test2 是Matlab的M File Name,也就是存放程式碼的檔名
puts $retx
### 上面的$comUtil test2 1 retx.. "1" 表示傳回一個值 由 retx 變數接
### 傳回 {6.0 11.0} {16.0 25.0}
訂閱:
文章 (Atom)
熱門文章
-
今天一位朋友在問我,他的電腦無法開機, 電源一開都沒畫面....怎麼辦? 通常螢幕沒有畫面的問題很多種, 第一考慮的是螢幕有沒有壞掉? 怎麼判斷呢? 1.檢查螢幕 先開螢幕的總電源,看是不是有亮電源燈? 若有表示電源輸入沒問題,再來就按螢幕的功能鍵, 看會不會跳出螢幕設定視窗...
-
前陣子玩了一些水耕的設備, 因為要天天記錄溫度、EC(電導度)、PH(酸鹼度), 顯得有點麻煩,所以打算自己 DIY 一些設備來玩玩。 首先考慮到程式開發的速度,選擇使用 Arduino 的板子來 DIY 我所購買的板子是 Arduino Leonardo, 另外購買 ...
-
魚菜共生的作法有很多種, 我所採用的是介質床加上 Bell Siphon(鐘虹吸) 產生潮汐現象, 網路上查詢的結果是這樣成功率比較高。 但是先前 DIY 的 Bell Siphon 調整了好久,才能有正常的虹吸現象, 原因就是虹吸的進水口水平難以調整, 後來去上了魚...