动态建立数据库/表(急!!)(100分)

  • 主题发起人 主题发起人 赵怀勇
  • 开始时间 开始时间

赵怀勇

Unregistered / Unconfirmed
GUEST, unregistred user!
恳请各路英雄回答我加入该论坛以来的第一个问题:如何在程序中动态建立
数据库,数据表,并队其进行保存和删除。作为见面礼,我将送上100大分!
 
用TTable的CreateTable方法可以动态的创建Parodox数据表,DeleteTable方法
删除表,创建之前通过属性FieldDefs和IndexDefs定义表的字段和索引。请参见Delphi的帮助,里面有创建表的完整的例子。
 
if not Table1.Exists then { Don't overwrite an existing table }

begin
with Table1 do
begin
Active := False; { The Table component must not be active }

{ First, describe the type of table and give it a name }
DatabaseName := 'DBDEMOS';
TableType := ttParadox;
TableName := 'CustInfo';

{ Next, describe the fields in the table }
with FieldDefs do
begin
Clear;
Add('Field1', ftInteger, 0, True);
Add('Field2', ftString, 30, False);

end;

{ Next, describe any indexes }
with IndexDefs do
begin
Clear;
{ The first index has no name because it is a Paradox primary key }
Add('', 'Field1', [ixPrimary, ixUnique]);
Add('Fld2Indx', 'Field2', [ixCaseInsensitive]);
end;

{ Now that we have specified what we want, create the table }
CreateTable;
end;
end;
 
同以上诸位的观点,方法大同小异就不贴了。
 
建表不用说的,直接用sql的create table就行了。
建库可就不一样的,paradox的database只是一个目录,而access则是mdb,建立时要调用ole....不知你要建什么样的。
关于建mdb,可以参见:
http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=143446
 
大的数据库系统也有创建库的命令
象SQL SERVER 的T-SQL有createdatabase的命令
但语法都各自不同,要去查

创建表应该不是问题吧
 
你用的DB是什么?
 
新建表:
1、在你的窗体上加一个query控件
2、在query的sql中键入:CREATE TABLE table_reference
(column_definition [, column_definition,...]
[, primary_key_constraint])
3、query.database:=你的数据库名
4、query.execute
删除表:(换第二步)
2、DROP TABLE table_reference

Good Luck!
 
如何实现数据库/表在硬盘任意目录下的存取和删除,并对数据库别名进行动态修改?
 
可以用 tquery 中的sql 属性解决 例如: create table test1(first varchar(20),end integer);就建立了一个名叫 test1 的表他有两个字段 first 是
20 个字符,而end 是整形字段
 
存储当然是用Tquery 的 post属性了
delete 是删除 别名是 aliasname
 
要是建表,上面所说都行.
所谓动态建库,如果我没有理解错,应该是建立数据库别名吧,要是这样
使用TSession就可以了.
if not Session.IsAlias('xxxxxxxxxx') then
//对SQL类,要用AddAlias
Session.AddStandardAlias('xxxxxxxxxx',
'd:prg/testcs/db','PARADOX');
xxDatabase.AliasName := 'xxxxxxxxxx';
xxDatabase.Connected := true;

如果真是要建库,建表,则我想不如亲自给客户安装,用程序要支持很多的
类型,文件型(DBF,Paradox...),目录即是库,服务器型(Oracle,M$ SQL...)
建库的函数可能各不相同,我用M$ SQL Server,要建库,先要建数据库设备,
有了设备,在其上建库(要指定库与Log),有内部函数用,可以自己写个
StoreProcedure完成建库工作.不过对其它大型数据库呢?
话题之外,现在有些软件动不动就称可以用M$ SQL,Oracle,Sybase等,好象
能通吃大小数据库,我不能认同,每个数据必定有其扩展,而其扩展,才正是其效
能体现,通吃的说法就是使用大家共性的东西,所以,可能也是效率不高的软件.
除非是软件对每个平台都有一个优化的版本.这又当别论.
 
yjshi说的是标准方法,这里不重述.但要注意,有些库建表时不能加入索引,
这是因为库本身的限制,如dbaseIII.
 
各位:
在使用CREATE TABLE建立数据表时,如何定义paradox的各种字段,请举例说明。
(比如字符:char;日期:date;那么货币型等怎样定义)
 
在运行期创建一个表,如下:

procedure CreateATable(DBName,TblName:String,TblTyoe:TTbaleType);
var
tbl:TTable;
Begin
tbl:=TTable.Create(Application);
with tbl do Begin
Active:=False;
DatabaseName:= DBName :
TableName:=TblName;
TableType:=TblType;
with FieldDefs do begin
Clear;
Add('LastName',ftString,30,False);
Add('FirstName',ftString,30,False);
Add('Address',ftString,40,False);
Add('Zip',ftString,10,False);
end;
{加入主关键字}
With indexDefs do begin
Clear;
Add('FieldIndex','LastName;FirstName',[ixPrimary,ixUnique]);
end;

CreateTable;
end;
end;

//该方法仅为桌面型的数据库创建表,还是比较简单的.
 
呵呵,基本上是帮助上的东西,既是这样,我也不多说了。
好好看帮助吧
 
本人正好近来完成了一个动态建立空件和动态建表的程序,我同意小天的.
 

发个例子给你好了。
 
多人接受答案了。
 
后退
顶部