如何在程序中用SQL写建立多个表的语句?(数据库在程序中动态建立SQL-SERVER)(100分)

  • 主题发起人 主题发起人 zkf001
  • 开始时间 开始时间
Z

zkf001

Unregistered / Unconfirmed
GUEST, unregistred user!
我用ADOQUERY连接SQL-SERVER,在程序中我用以下语句建立数据库及多个表:
dataunit.DataModule1.adoquery3.close;
dataunit.DataModule1.adoquery3.sql.clear;
dataunit.DataModule1.adoquery3.SQL.Add('create database '+edit4.Text);//edit4
为表名
dataunit.DataModule1.adoquery3.SQL.Add('use '+edit4.Text);
dataunit.DataModule1.adoquery3.SQL.Add('CREATE TABLE [dbo].[工作站信息表] ([工作组] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,[计算机名] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,');
dataunit.DataModule1.adoquery3.SQL.Add('[所在位置] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,[联系电话] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL) ON [PRIMARY]');
dataunit.DataModule1.adoquery3.ExecSQL;
但以上语句执行却有误,如何解决?(单个执行时没有问题)
 
我觉得这样:
你先生成sql语句,
然后用sql.add(sql语句);这样不仅条理清楚,而且错误产生的机会降低。
 
zhengzhijia:
你的意思就是说先生成要执行的多个SQL语句,然后就用一个SQL.ADD,如何操作呢?
(好像在SQL.ADD中,只能一行行加要执行的SQL语句,我也想找到类似TEXT的语句执行
模式,但未找到)

另外,在建立数据库后,用USE语句打开另一个库并建立表后,DELPHI也会报错,因为ADOQ
UERY连接的是当前数据库,如何解决这一问题呢?
 
老兄:
你写个过程
procedure execsql(query;tquery;sqlstr:string;isexec:boolean)
begin
with query do
begin
close;
sql.clear;
sql.add(sqlstr);
if isecec then open else execsql;
end;


在程序中
sqlstr1 ;= 'create ' +edit4.text;
execsql(query1,sqlstr,false);
sqlstr1 := '....';
execsql(...);
...
end;
 
zhengzhijia:
你的方法和我的毫无区别,无非你用了一个过程,而我未用。
请各位帮忙!
 
把建表语句全部写在一个文件然后loadfromfile,在执行不就完事
 
zkf001:

提示什么错误?

不要小看先生成语句吆!
有时你的做法是有问题的;你不妨按我的方法试试。
不行,在想其他方法。
 
多人接受答案了。
 
后退
顶部