2008年6月6日 星期五

輕盈的資料庫 SQLite

在某些情況下,會用到資料庫,但又不想要安裝一個龐大的系統在電腦中,
這時可以選擇輕如羽毛的資料庫 SQLite ,
它是免費軟體,重點是他的輕量化讓人感覺不到他的存在,
而且功能具備,實在是一個好用的資料庫。
除了 PHP 會用到,還支援很多語言,可以上官方網站查詢,
我也寫了一篇 TCL 和 SQLite 的應用,這是參考官網的 Documentation 範例所改編,
非常的簡單易學,今天第一次接觸,就發現它的輕便之處,
Command-Line程式也才幾百K,下載回來的DLL也一樣的小,
單一的檔案,直接使用,不用安裝,簡單明瞭,驚嚇到嘴巴合不攏。
有需要的可以下載回來玩玩看。

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

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}

熱門文章