在DELPHI程序中如何自动创建SQL SERVER 数据库表? (200分)

  • 主题发起人 芭芭拉
  • 开始时间

芭芭拉

Unregistered / Unconfirmed
GUEST, unregistred user!
我是这样写的但是创建不成功,这是为什么?
首判断XSZX不存在然后开始创建。
ADOQuery1.SQL.add('IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name <> ''xszx'') ');
ADOQuery1.sql.add('create database xszx');
ADOQuery1.sql.add('on primary (filename='''+filename+''')');
ADOQuery1.sql.add('for attach ');
 
1、好像反了
2、需要写成两个SQL语句
ADOQuery1.SQL.Text := 'SELECT name FROM master.dbo.sysdatabases WHERE name = ''xszx''';
ADOQuery1.SQL.Open;
if ADOQuery1.IsEmpty then
begin
ADOQuery1.sql.Close;
ADOQuery1.sql.Clear;
ADOQuery1.sql.add('create database xszx');
ADOQuery1.sql.add('on primary (filename=''' + filename + ''')');
ADOQuery1.sql.add('for attach ');
ADOQuery1.sql.ExecSQL;
end;
 
当然用SQL语句
如果你还有不熟悉,就直接用SQL SERVER里保存数据结构
把表存为SQL文件把里面语句直接放到QUERY
 
用存储过程,非常简单的。
 
数据库都还没建起哪来的存储过程?
 
是不是语法错误?
FOR ATTACH
指定从现有的一组操作系统文件中附加数据库。必须有指定第一个主文件的 <filespec> 条
目。至于其它 <filespec> 条目,只需要与第一次创建数据库或上一次附加数据库时路径不
同的文件的那些条目。必须为这些文件指定 <filespec> 条目。附加的数据库必须使用与
SQL Server 相同的代码页和排序次序创建。应使用 sp_attach_db 系统存储过程,而不要
直接使用 CREATE DATABASE FOR ATTACH。只有必须指定 16 个以上的 <filespec> 项目时,
才需要使用 CREATE DATABASE FOR ATTACH。

下面是执行成功的代码:
procedure TForm1.btnCreateClick(Sender: TObject);
begin
ADOConnection1.Execute('CREATE DATABASE Sales'#13#10 +
'ON PRIMARY'#13#10 +
'( NAME = SPri1_dat,'#13#10 +
' FILENAME = ''F:/Test.mdf'','#13#10 +
' SIZE = 10,'#13#10 +
' MAXSIZE = 50,'#13#10 +
' FILEGROWTH = 15% )');
end;

procedure TForm1.btnDropClick(Sender: TObject);
begin
ADOConnection1.Execute('DROP DATABASE Sales');
end;



 
有没有关于 软件产业与经济发展的论文,有赏30块大洋
delphifans_hx@yahoo.com.cn
 
请问能不能在客户端动态的建立一个数据库,知道请回答
 
客户端动态的建立一个数据库? 要安装SQL Server才行的
除非你是创建一个Access数据库,那就没有问题。
 
to xianjun
我搞了一个项目,就是C/S型,使用的是SQL2000数据库,先需要在客户端动态的
建立一个数据库,请问怎样实施?
你可以参与下列问题的讨论:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1122536
 
hrb_online: 你的意思是客户端发出命令,在服务器动太建立一个数据库吧
如果是这样的话,用我上面的语句就行了。
 
ADOQuery1.SQL.Text := 'SELECT name FROM master.dbo.sysdatabases WHERE name = ''xszx''';
ADOQuery1.SQL.Open;
if ADOQuery1.IsEmpty then
begin
ADOQuery1.sql.Close;
ADOQuery1.sql.Clear;
ADOQuery1.sql.add('create database xszx');
ADOQuery1.sql.add('on primary (filename=''' + filename + ''')');
ADOQuery1.sql.add('for attach ');
ADOQuery1.sql.ExecSQL;
end;
 
接受答案了.
 
顶部