Delphi中動態建立Access資料庫和資料表

2022-08-02 21:18:17 字數 4444 閱讀 1966

一、通過ole方式建立

相信各位都用通過ole方式訪問word、excel檔案的經歷,具體我不說太多,直接把具體**寫出來就完了

在引用部分加入:

uses comobj;

實現部分:

procedure tformoffice.bitbtn1click(sender: tobject);

varcreateaccess:olevariant;

begin

createaccess:=createoleobject('adox.catalog');

createaccess.create('provider=microsoft.jet.oledb.4.0;data source=c:\aceco.mdb');

end;

說明:1、在c:\下建立aceco.mdb;

2、是access2000格式,用access97打不開;

3、系統需安裝mdac,這是好訊息,客戶不需安裝access也可以

二、通過dbengine建立

這才是關鍵中的關鍵,是我一定要寫出來的原因!

各位是否還記得安裝delphi的時候,如果你選擇自定義安裝(我一般用delphi寫控制項,所以當然是越小越好),會有很多安裝選項,讓你選擇access97或access2000,還有mdac等,問題就在這裡!delphi5.0中早就封裝了現成的類,只是大家都沒有注意而已它位於:

$delphi5\imports

目錄下!

其中有dao97.dcu檔案,它是通過dao350.dll來完成的,其中的定義部分和dao350.dll如出一轍!ok,到現在,所有的一切都明白了(可惜我花了一天時間!)。那麼具體實現起來就太方便了,具體過程如下:

在引用部分加入:

uses dao97;

實現部分:

procedure tformoffice.bitbtn4click(sender: tobject);

varengine:dbengine;

begin

engine:=codbengine.create;

engine.createdatabase('c:\newaccess.mdb',';langid=0x0804;cp=936;country=0;',dbencrypt);

end;

說明:1、在c:\下建立newaccess.mdb;

2、語言國家是簡體中文;

3、壓縮整理資料庫用engine.compactdatabase('c:\invoice.mdb','c:\god.mdb','',0,'');就是將c:\invoice.mdb壓縮整理成c:\god.mdb,剩下的只是將c:\invoice.mdb刪除(deletefile('c:\invoice.mdb');),然後將c:\god.mdb重新命名(renamefile('c:\god.mdb','c:\invoice.mdb');)即可。

三、通過access97建立,然後拷貝

四、通過odbc的api函式建立

補充:1、通過ole方式建立時如果是access97,那麼可能是createaccess.create('provider=microsoft.jet.oledb.3.5.1;data source=c:\aceco.mdb');,嘿嘿,小弟對vb實在是一竅不通,還望各位再測試一下(可以需要mdac比較低的版本)。

2、關於createdatabase中國家的設定:

module languageconstants; // dao predefined constants.

dblangarabic = ;langid=0x0401;cp=1256;country=0;

dblangczech = ;langid=0x0405;cp=1250;country=0;

dblangdutch = ;langid=0x0413;cp=1252;country=0;

dblanggeneral = ;langid=0x0409;cp=1252;country=0;

dblanggreek = ;langid=0x0408;cp=1253;country=0;

dblanghebrew = ;langid=0x040d;cp=1255;country=0;

dblanghungarian = ;langid=0x040e;cp=1250;country=0;

dblangicelandic = ;langid=0x040f;cp=1252;country=0;

dblangnordic = ;langid=0x041d;cp=1252;country=0;

dblangnorwdan = ;langid=0x0414;cp=1252;country=0;

dblangpolish = ;langid=0x0415;cp=1250;country=0;

dblangcyrillic = ;langid=0x0419;cp=1251;country=0;

dblangspanish = ;langid=0x040a;cp=1252;country=0;

dblangswedfin = ;langid=0x040b;cp=1252;country=0;

dblangturkish = ;langid=0x041f;cp=1254;country=0;

dblangjapanese = ;langid=0x0411;cp=932;country=0;

dblangchinesesimplified = ;langid=0x0804;cp=936;country=0;

dblangchinesetraditional = ;langid=0x0404;cp=950;country=0;

dblangkorean = ;langid=0x0412;cp=949;country=0;

dblangthai = ;langid=0x041e;cp=874;country=0;

dblangslovenian = ;langid=0x0424;cp=1250;country=0;

3、關於createdatabase中資料庫版本資訊

enum databasetypeenum;

dbversion10 = 1;

dbencrypt = 2;

dbdecrypt = 4;

dbversion11 = 8;

dbversion20 = 16;

dbversion30 = 32;

4、其它方面,希望各位再加補充。

方法一示例:通過ole方式建立資料庫和表。

procedure tform1.createdb(dbname: string);

var dbnew:olevariant;

begin

if fileexists(dbname) then

begin

+ dbname + ' 已存在!'+ #13#10 +'是否覆蓋?'),

'警告',mb_yesno + mb_iconwarning) = idno then exit;

if not deletefile(dbname) then

begin

pchar('不能刪除資料庫:' + dbname),

'錯誤',mb_ok + mb_iconerror);

exit;

end;

end;

dbnew:=createoleobject('adox.catalog');

dbnew.create('provider=microsoft.jet.oledb.4.0;data source=' + dbname);

adoq1.connectionstring:='provider=microsoft.jet.oledb.4.0;data source='

+dbname+';persist security info=false';

adoq1.close;

adoq1.sql.text := 'create table 測試 (id int not null,'

+'姓名 char(8) not null,年齡 int not null)';

adoq1.execsql;

adoq1.close;

adoq1.sql.text := 'create unique index idindex on 測試 (id)';

adoq1.execsql;

adoq1.close;

adoq1.sql.text := 'create index xmindex on 測試 (姓名)';

adoq1.execsql;

adoq1.close;

adoq1.sql.text := 'create index nlindex on 測試 (年齡)';

adoq1.execsql;

pchar('資料庫:' + dbname+'建立完成'),

'ok',mb_ok + mb_iconwarning);

end;

//建立資料庫dbname並且建立表:測試。

DELPHI動態建立窗體

第一種方式 procedure tform1.btn1click sender tobject begin try showmodal finally free end end 第二種方式 procedure tform1.btn2click sender tobject begin if not ...

在VC中用ADO動態建立帶密碼的Access資料庫

本文主要介紹了動態建立access資料庫和設定密碼的方法.例如 假設一位使用者的歷史資訊需要存放到本地.我們有許多的使用者都需要這樣的功能.那麼手動建立資料庫是很麻煩的.於是我們可以考慮動態的來新增.但同時你又希望不被他人輕易看見.此時需要設定乙個密碼.那麼這也就是本文要做的事情.我們首先要建立vc...

在VC中用ADO動態建立帶密碼的Access資料庫

首先要建立vc的工程,開啟stdafx.h標頭檔案.在其中加入如下兩句話 import c program files common files system ado msadox.dll import c program files common files system ado msado15....