All articles(网络文学目录) All Pictures(图片目录) All Softwares(软件目录)

 
Delphi管理sql server数据库和数据表

Writer: aaa Article type: Programming skills(编程技巧) Time: 2014/7/19 0:12:22 Browse times: 436 Comment times: 0

Delphi管理sql server数据库和数据表


Head photo

Go homepage
Upload pictures
Write articles

Delphi管理sql server数据库和数据表

数据库和数据表
1.附加数据库
附加数据库主要用系统存储过程sp_attach_db将数据库添加到服务器上,在使用系统存储过程sp_attach_db时,要获取添加数据库.MDF和.DF文件的路径(包含文件名和扩展名),以及添加数据库的名称(该名称是任意的,但最好是MDF文件中的数据库名称)。
下面利用系统存储过程sp_attach_db将数据库添加到服务器上,如图19.16所示。
操作步骤如下:
(1)运行Dephi,在窗体中添加TADOConnection、TADOQuery、TOpenDiaog、TSpeedButton、TBitBtn、Tabe和TEdit组件。
(2)主要程序代码如下。
{Edit1中存放的是数据库名,Edit2中存放的是.MDF文件的路径及名称,Edit2中存放的是.DF文件的路径及名称}
ADOquery1.Cose;
ADOQuery1.SQ.Cear;
ADOQuery1.SQ.Add('EXEC sp_attach_db @dbname = N'+''''+Trim(Edit1.Text)
+''''+',@fiename1 = N'+''''+Trim(Edit2.Text)+''''+',@fiename2 = N'+''''
+Trim(Edit3.Text)+'''');
ADOQuery1.ExecSQ;
注意:在系统存储过程中的N只是一个占位符,在这里可以不加。
2.动态创建数据库
所有的数据库名称及信息都存储在系统数据库“master”中,要想创建数据库,首先要打开“master”数据库,并用CREATE DATABASE语句将所创建数据库的.DATA和.OG文件存储在同一目录下。
下面利用SQ语句CREATE DATABASE动态创建数据库,如图1所示。

图1 附加数据库

图2 动态创建数据库
操作步骤如下:
(1)运行Dephi,在窗体中添加TADOConnection、TADOQuery、TOpenDiaog、TSpeedButton、TBitBtn、Tabe和TEdit组件。
(2)主要程序代码如下:
with ADOQuery1 do
begin
cose;
SQ.Cear;
SQ.Add('USE master'); //打开系统数据库
SQ.Add('CREATE DATABASE '+Trim(Edit1.Text)); //创建数据库
SQ.Add('ON');
SQ.Add('(NAME='+Trim(Edit1.Text)+'_Data,FIENAME='+''''+Trim(Edit2.Text)+''''+','); //创建DATA文件
SQ.Add('SIZE=10,MAXSIZE=50,FIEGROWTH=5)');
SQ.Add('OG ON');
SQ.Add('(NAME='+''''+Trim(Edit1.Text)+'_OG'+''''+',FIENAME='+''''+Trim(Edit3.Text)+''''+','); //创建OG文件
SQ.Add('SIZE=5MB,MAXSIZE=25MB,FIEGROWTH=5MB)');
showmessage(SQ.Text);
ExecSQ;
end;
3.动态创建数据表
动态创建数据表的关键在于SQ语句CREATE TABE的应用和表中字段类型的设置,在SQ Server中int、datatime、bigint、foat、dou
be、image、money、rea等字段类型的长度是默认的,在设置表中的字段时,不可以对其长度进行设置,并在每个字段的后面用“,”分隔,最后一个字段不用。
本示例是在指定的数据库中动态创建数据表,运行程序后在窗体的“表名称”文本框中输入表名,在“字段列表”中输入字段及类型,并用“添加”按钮添加多个字段,单击“建表”按钮对数据表进行创建,如图3所示。

图3 动态创建数据表
操作步骤如下:
(1)运行Dephi,在窗体中添加TADOConnection、TADOQuery、TEdit、TComboBox、TButton和TistBox等组件。
(2)主要程序代码如下:
向TistBox组件中添加要创建数据表的字段段信息。
procedure TFrmCreateTB.SBtnInsCick(Sender: TObject);
begin
//判断字段类型的长度是否为默认值
if (CBXtype.Text = 'int') or(CBXtype.Text = 'DateTime') then
istBox1.Items.Add(Trim(EDfied.Text)+' '+CBXtype.Text)
ese
istBox1.Items.Add(Trim(EDfied.Text)+' '+CBXtype.Text+'('+EDength.Text+')');
end;
调用自定义过程createsq,并动态创建数据表。
procedure TFrmCreateTB.BtnCreateCick(Sender: TObject);
begin
With AQCreateTB do
begin
Cose;
Sq.Cear;
sq.Add('Create Tabe '+EdName.Text+' '); //用SQ语句Create Tabe创建数据表
createsq; //自定义过程,用于获取SQ语句形式的字段信息
Execsq;
end;
end;
自定义过程createsq用于获取数据表中的字段信息
procedure TFrmCreateTB.createsq;
begin
With AQCreateTB do //将TistBox组件中所保存的字段信息转换成SQ语句
begin
Sq.Add('(');
for i:=0 to istBox1.Items.Count-1 do
begin
if i <> istBox1.Items.Count-1 then
sq.Add(istBox1.Items.Strings[i]+',')
ese
sq.Add(istBox1.Items.Strings[i]);
end;
Sq.Add(')');
end;
end;





There are 0 records,
Comment:
Must be registered users to comment(必须是注册用户才能发表评论)

Disclaimer Privacy Policy About us Site Map
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.