按功能表 "Component" 選項
==> Import Component
圖一
圖二
Pallette Page 是選擇建立好的元件,要放在工具盤的哪個頁籤,我選擇 dbGo。
Unit Dir Name 是檔案存放處,我選擇放在 C:\Embarcadero\RAD Studio\版本\Imports\,純粹是基於個人喜好。
按一下 Class Name(s) 最右方的 ... 鈕,出現圖四的畫面。
圖三
將各個 class 的 Class Name 都插入 ADOX,例如:Table ==> TADOXTable,TColumn ==> TADOXColumn,TIndex ==> TADOXIndex,TKey ==> TADOXKey,TGroup ==> TADOXGroup,TUser ==> TADOXUser,TCatalog ==> TADOXCatalog。
選擇存放位置並輸入 package name
圖六
圖七

關閉、重新啟動 Delphi,再去看 dbGo 頁籤,就會看到多了 7 個元件了。
新建一個專案,在 Form 上放置 2 個 TButton,1 個 TADOXCatalog,1 個 TADOConnection,1 個 TADOCommand。
Button1 的程式如下:
procedure TForm1.Button1Click(Sender: TObject);
var
DataSource : string;
dbName : string;
begin
dbName := 'd:\test.mdb';
DataSource := 'Provider=Microsoft.Jet.OLEDB.4.0'
+ ';Data Source=' + dbName
+ ';Jet OLEDB:Engine Type=4';
ADOXCatalog1.Create1(DataSource);
end;
Engine type 4 是建立 Access 97 的資料庫, type 5 是 Access 2000。
當您按下 Button1,就會看到在 D:\ 下產生了 test.mdb,這只是個空的 mdb,並且本段程式並不會檢查 mdb 檔是否已建立,所以若您再按一次 Button1,會出現錯誤訊息 "資料庫已存在"。
在 Button2 寫入新增資料表的程式,並為資料表建立關聯:
procedure TForm1.Button2Click(Sender: TObject);
var
DataSource : string;
cs : string;
begin
// 連線 test 資料庫
DataSource := 'Provider=Microsoft.Jet.OLEDB.4.0'
+ ';Data Source=d:\test.mdb'
+ ';Persist Security Info=False';
ADOConnection1.ConnectionString := DataSource;
ADOConnection1.LoginPrompt := False;
ADOCommand1.Connection := ADOConnection1;
// 新建資料表 types
cs := 'CREATE TABLE types (typename TEXT(50))';
ADOCommand1.CommandText := cs;
ADOCommand1.Execute;
// 新建資料表 authors
cs := 'CREATE TABLE authors ('
+ 'authorname TEXT(50),'
+ 'email TEXT(50),'
+ 'web TEXT(50))';
ADOCommand1.CommandText := cs;
ADOCommand1.Execute;
// 建立資料表 types 的主鍵欄
cs := 'CREATE INDEX idxPrimary '
+ 'ON types (typename) WITH PRIMARY';
ADOCommand1.CommandText := cs;
ADOCommand1.Execute;
// 建立資料表 authors 的主鍵欄
cs := 'CREATE INDEX idxPrimary '
+ 'ON Authors (authorname) WITH PRIMARY';
ADOCommand1.CommandText := cs;
ADOCommand1.Execute;
// 關聯資料表
cs := 'CREATE TABLE Applications ('
+ ' Name TEXT(50),'
+ ' Description TEXT(50),'
+ ' Author TEXT(50) CONSTRAINT idxauthor '
+ 'REFERENCES Authors (authorname),'
+ ' Type TEXT(50) CONSTRAINT idxtype '
+ 'REFERENCES Types (typename),'
+ ' [Size] FLOAT,'
+ ' Cost CURRENCY,'
+ ' DateUpl DATETIME,'
+ ' Picture LONGBINARY)';
ADOCommand1.CommandText := cs;
ADOCommand1.Execute;
end;









沒有留言:
張貼留言