如何建立数据库(100分)

  • 主题发起人 主题发起人 fatBaby
  • 开始时间 开始时间
F

fatBaby

Unregistered / Unconfirmed
GUEST, unregistred user!
只使用 Delphi 5 或 BCB 5 的 ADO 控件。
如何用SQL或其它方式(程序方式)建立一个ACCESS数据库(*.mdb)

需附详细源码和说明
 
用ADOCONNECTTION 控件中的CONNECTION属性连接数据库。
用ADOQUERY与ADOCONNECTTION相连接
 
我要建的是数据库 (*.mdb)

不是单张的 Table

让我的 AdoConnection 和谁去建立链接 ???????



 
数据库一般情况下是你自己先建立它然后才能使用,如果你要建立数据库的话,要看
该数据库驱动程序是否支持创建数据库的功能,我认为ACCESS好象不行,要不你用
create database 就会出错!
 
我没用过ACCESS,要建立数据库好象不行。若有数据库建表还差不多。
不过也不一定。
 
建表是没问题的,可是现在偏要求建库

怎么办啊?怎么办啊?怎么办啊?怎么办啊?~~~~~~~~~~~~~~~~~~~
 
我曾经使用过Diamond Access 1.90在程序中建立过Access的数据库文件。
该控件中也包含了一个样例,你参考以下,希望能对你有所帮助。
下附建立数据库的代码:
procedure TMainFrm.Button1Click(Sender: TObject);
var
dbname: string;
db: Database;
td: TableDef;
idx: Index;
rel: Relation;
begin
if InputQuery ('Database name', 'Enter database name', dbname) then
begin
if __DBEngine35 = nil then CreateEngine (Dao35, '');

db := __DBEngine35.CreateDatabase (ExtractFilePath (Application.ExeName) + dbname, ';LANGID=0x0409;CP=1252;COUNTRY=0', 0);

td := db.CreateTableDef ('Orders', 0, '', '');
td.Fields.Append (td.CreateField ('Order_ID', dbInteger, 0));
td.Fields.Append (td.CreateField ('Order_DATE', dbDate, 0));
td.Fields.Append (td.CreateField ('Order_CLIENT', dbText, 50));
td.Fields.Append (td.CreateField ('Order_TOTAL', dbCurrency, 0));

idx := td.CreateIndex ('Primary');
idx.Primary := True;
idx.Fields.Append (idx.CreateField ('Order_ID', dbInteger, 0));
td.Indexes.Append (idx);

idx := td.CreateIndex ('By_Client');
idx.Fields.Append (idx.CreateField ('Order_CLIENT', dbText, 50));
td.Indexes.Append (idx);
db.TableDefs.Append (td);

td := db.CreateTableDef ('Items', 0, '', '');
td.Fields.Append (td.CreateField ('Item_ID', dbInteger, 0));
td.Fields.Append (td.CreateField ('Order_ID', dbInteger, 0));
td.Fields.Append (td.CreateField ('Item_NAME', dbText, 40));
td.Fields.Append (td.CreateField ('Item_COUNT', dbInteger, 0));
td.Fields.Append (td.CreateField ('Item_PRICE', dbCurrency, 0));

idx := td.CreateIndex ('Primary');
idx.Primary := True;
idx.Fields.Append (idx.CreateField ('Item_ID', dbInteger, 0));
td.Indexes.Append (idx);

idx := td.CreateIndex ('By_Order');
idx.Fields.Append (idx.CreateField ('Order_ID', dbInteger, 0));
td.Indexes.Append (idx);

db.TableDefs.Append (td);

rel := db.CreateRelation ('ItemsOrders', 'Orders', 'Items', dbRelationUpdateCascade);
rel.Fields.Append (rel.CreateField ('Order_ID', dbInteger, 0));
rel.Fields ['Order_ID'].ForeignName := 'Order_ID';
db.Relations.Append (rel);

db.Close;
end;
end;

end.
 
太麻烦了!
还不如建一个空的数据库,用的时候,在其中创建表,创建结束,把这个数据库改名
copy到指定的地方,这样要简单的多。
 
早听说过 Diamond Access 可以,

但就是要用 ADO , Delphi 自身的控件

没办法,

BOSS 永远是 BOSS ...
 
在ACCESS下生成一个空数据库文件。跟程序一起发布,当需要生成新数据库时直接复制
一份就可以了。
 
呵呵,建立一个二进制文件 ?
还不如建好拷进去,

你用控件把原始的 mdb 包含在 exe 中吧,这样挺方便的
 
接受答案了.
 
后退
顶部