發表文章

目前顯示的是 四月, 2013的文章

自製懶人版的DbxDAC

圖片
因為SQLClientDataSet已經作廢,取而代之的SimpleDataSet 又搞不清那神奇的「InternalConnection」和詭異的「InternalDataSet」……

今天突發奇想,如果我自己做一個DbxDataSet呢?
製作上很簡單,底下來幾張簡圖:
一、新增VCL專案
二、新增Frame
三、把Dbexpress(ADO亦可)相依的元件放進來並作好綁定工作
DataSetProvider.Option的poAllowCommandText 設 True,這樣就可以直接對ClientDataSet下SQL指令。

為了讓它更像DataSet,所以我寫了以下的Code:
unit DbxDACUnit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, FMTBcd, DBClient, Provider, DB, SqlExpr; type TDbxDataSet = class(TFrame) qy: TSQLQuery; dsp: TDataSetProvider; cds: TClientDataSet; procedure cdsAfterPost(DataSet: TDataSet); procedure cdsAfterDelete(DataSet: TDataSet); procedure cdsAfterCancel(DataSet: TDataSet); private function GetSQLConnection: TSQLConnection; procedure SetSQLConnection(const Value: TSQLConnection); procedure ApplyUpdates(DataSet: TDataSet); { Private declarations } public { Public declarations } property SQLConnection: TSQLConnection read GetSQLC…

Devart Dbexpress driver for SQLite + Run-time created Encrypt Database

圖片
還記得這個網址嗎?
ID: 18385, SQLite DbExpress driver

2008~2009年時我曾經有拿它來和Firebird作比較
當 C++ Builder 遇上 Firebird
關於dbExpress + SQLite3 怎麼用?



但事實上因為Bug無比多,所以我後來就放棄了Dbexpress + SQLite的方式


一直到Devart的出現才讓我又燃起了使用SQLite的慾望


為什麼要使用SQLite呢?

答案很簡單,因為它能夠在不同的平台上被讀取、運作

iOS、Android上最常被用到的單機資料庫就是SQLite,如果同樣的資料庫架構可以輕鬆移轉到其它的平台上,那是多切愜意的事啊!

那麼,Devart這次要來變什麼魔術呢?

安裝步驟實在太簡單了,我就不再做介紹了

而企業上使用最常見的大概就是加密了,雖然解開後也沒什麼資料,但老闆們就是愛這一味……

而且沒問題的Demo重玩就沒意思了,哈!

所以我們就來介紹Devart的加密資料庫建立及資料表的使用吧

資料庫的建立?對,你沒聽錯,Devart的Dbexpress for SQLite driver是讓Dbexpress擁有自行建立資料庫的強大實力

首先我們要來打開Devart自帶的Demos:「%ProgramsFiles%\Devart\Dbx\SQLite\Demos\Win32\SimpleDataSet」

接下來就是設定SQLConnection.Params
參考Readme.htm的內容,我們得出以下的程式碼:
procedure TfmMain.edDatabaseExit(Sender: TObject); begin if edDatabase.Text <> '' then begin SQLConnection.ConnectionName := 'Devart SQLite Direct'; SQLConnection.DriverName := 'DevartSQLiteDirect'; SQLConnection.LibraryName := 'dbexpsqlite40.dll'; SQLConnection.GetDriverFunc := 'getSQ…

設定Double click間隔時間

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetDoubleClickTime(1500);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  ShowMessage(IntToStr(GetDoubleClickTime));
end;


資料來源:Get/set the doubleclick time