Skip to Content

BCB5專業版使用內嵌資料庫 (二)

去年 12 月寫了篇「BCB5 專業版使用內嵌資料庫」,那只是基本研究,讓資料庫可以在 BCB5 Pro 呈現,但諸多細節都沒有深入研究,這二天又研究了一些東西,終於確定資料庫的應用沒有問題了。

資料庫依然是選擇火鳥 (http://www.firebirdsql.org/),並使用其內嵌版的 DLL。如此一來,使用者就不用額外安裝資料庫客戶端程式。

資料庫與 BCB5 Pro 的介面就是 UIB -- Unified Interbase (http://www.progdigy.com/modules.php?name=UIB),它等於是 BCB 控制資料庫的元件。

資料庫的建立與操作可以用 FlameRobin (http://www.flamerobin.org/),這是一個客戶端的程式,可用來建立與操作火鳥的資料庫,我用他來建立資料庫與建立表格。

至目前為止,有一個美中不足的問題,那就是字集的問題。BCB5 目前還不支援 Unicode,我是利用 TntWare Unicode controls (http://www.tntware.com/delphicontrols/unicode/) (現在好像換成了 TMS Unicode Component Pack (http://www.tmssoftware.com/go.asp?tmsuni)) 來處理呈現的介面,不過它是支援 UTF16,而火鳥資料庫、UIB 及 FlameRobin 在 Unicode 只是支援 UTF8,這等於是我要在 BIG5(ANSI)、UTF8、UTF16 這三者之間不斷地打轉了。

如果剛好是純 BIG5 的資料,則我還可以直接用 TntWare Unicode controls 來溝通與直接在程式介面呈現。基本設定如下:

《JvUIBDataBase》-- UIB 元件
CharacterSet : csNONE (若是 UTF8, 就選 csUTF8)
DatabaseName : db\database.fdb (指出資料庫的相對位置)
LibraryName : fbembed.dll
UseName : sysdba (預設的)
PassWord : masterkey (預設的)

《JvUIBTransaction》-- UIB 元件
DataBase : JvUIBDataBase

《JvUIBDataSet》-- UIB 元件
DataBase : JvUIBDataBase
Transaction : JvUIBTransaction
SQL : "select * from table"

《DataSource》-- BCB 元件
DataSet : JvUIBDataSet

以上的設定就可以直接資料庫元件直接呈現資料庫的內容。

若是 Unicode 資料或是要在背後運算,就要利用 SQL + Query 來運作,這裡寫一個很簡單的例子:

// 設定 Query SQL
JvUIBQuery1->SQL->Text = "select * from tripitaka;";
// 開啟資料庫
JvUIBQuery1->Open(true);
// 取第一筆的 ID 欄位
AnsiString sID = JvUIBQuery1->Fields->ByNameAsString["ID"];
// 下一筆
JvUIBQuery1->Next();
// 取出第二筆的 NAME 欄位 (假設資料庫是 UTF8 字集)
AnsiString sName = JvUIBQuery1->Fields->ByNameAsString["NAME"];
// 底下是把 sName 轉換成 Unicode , 假設字串長度不超過 100
wchar_t uName[100] = L"";
MultiByteToWideChar(CP_UTF8,0,sName.c_str(),-1,uName,100);
// 把 Unicode 呈現在 TntWare Unicode 元件
TntEdit->Text = uName;
// 關閉資料庫
JvUIBQuery1->Close(etmCommit);

以上就可以在程式中逐筆處理資料庫中的資料了。如果有需要在 Unicode 元件中呈現資料庫中 Unicode 的文字,可能要一一轉換才能做到吧,如果有更好的方法,也請告知喔。

回應

發表新回應

這個欄位的內容會保密,不會公開顯示。
  • 自動將網址與電子郵件地址轉變為連結。
  • 自動斷行和分段。
  • 可使用的 HTML 標籤:<a> <address> <b> <blockquote> <br> <caption> <center> <cite> <code> <dd> <del> <div> <dl> <dt> <em> <h1> <h2> <h3> <h4> <h5> <h6> <hr> <i> <img> <ins> <li> <ol> <p> <pre> <span> <strike> <strong> <sub> <sup> <table> <tbody> <td> <th> <tr> <u> <ul>
    Allowed Style properties: background, background-attachment, background-color, background-image, background-position, background-repeat, border, border-bottom, border-bottom-color, border-bottom-style, border-bottom-width, border-collapse, border-color, border-left, border-left-color, border-left-style, border-left-width, border-right, border-right-color, border-right-style, border-right-width, border-spacing, border-style, border-top, border-top-color, border-top-style, border-top-width, border-width, bottom, caption-side, clip, color, direction, empty-cells, font, font-family, font-size, font-size-adjust, font-stretch, font-style, font-variant, font-weight, height, left, letter-spacing, line-height, list-style, list-style-image, list-style-position, list-style-type, margin, margin-bottom, margin-left, margin-right, margin-top, max-height, max-width, min-height, min-width, overflow, padding, padding-bottom, padding-left, padding-right, padding-top, right, table-layout, text-align, text-decoration, text-indent, text-transform, top, unicode-bidi, vertical-align, white-space, width, word-spacing, z-index

更多關於格式選項的資訊

CAPTCHA
驗證碼只有阿拉伯數字, 這是躲廣告用的, 麻煩你輸入了.
Image CAPTCHA
Enter the characters shown in the image.


story | about seo