if exists(select 1 from sysobjects where id=object_id('sp_getscript') and objectproperty(id,'IsProcedure')=1)
drop procedure sp_getscript
go
create procedure sp_getscript
@servername varchar(50)
,@userid varchar(50)
,@password varchar(50)
,@databasename varchar(50)
,@objectname varchar(250)
,@re varchar(8000) output
as
declare @srvid int,@dbsid int
declare @dbid int,@tbid int
declare @err int,@src varchar(255), @desc varchar(255) exec @err=sp_oacreate 'sqldmo.sqlserver',@srvid output
if @err<>0 goto lberr
if isnull(@userid,'')=''
begin
exec @err=sp_oasetproperty @srvid,'loginsecure',-1
if @err<>0 goto lberr exec @err=sp_oamethod @srvid,'connect',null,@servername
end
else
exec @err=sp_oamethod @srvid,'connect',null,@servername,@userid,@passwordif @err<>0 goto lberrexec @err=sp_oagetproperty @srvid,'databases',@dbsid output
if @err<>0 goto lberrexec @err=sp_oamethod @dbsid,'item',@dbid output,@databasename
if @err<>0 goto lberr
exec @err=sp_oamethod @dbid,'getobjectbyname',@tbid output,@objectname
if @err<>0 goto lberr
exec @err=sp_oamethod @tbid,'script',@re output
if @err<>0 goto lberr
returnlberr:
exec sp_oageterrorinfo NULL, @src out, @desc out
declare @errb varbinary(4)
set @errb=cast(@err as varbinary(4))
exec master..xp_varbintohexstr @errb,@re out
select ErrorCode=@re, ErrorSource=@src, ErrorDesc=@desc
returngo
drop procedure sp_getscript
go
create procedure sp_getscript
@servername varchar(50)
,@userid varchar(50)
,@password varchar(50)
,@databasename varchar(50)
,@objectname varchar(250)
,@re varchar(8000) output
as
declare @srvid int,@dbsid int
declare @dbid int,@tbid int
declare @err int,@src varchar(255), @desc varchar(255) exec @err=sp_oacreate 'sqldmo.sqlserver',@srvid output
if @err<>0 goto lberr
if isnull(@userid,'')=''
begin
exec @err=sp_oasetproperty @srvid,'loginsecure',-1
if @err<>0 goto lberr exec @err=sp_oamethod @srvid,'connect',null,@servername
end
else
exec @err=sp_oamethod @srvid,'connect',null,@servername,@userid,@passwordif @err<>0 goto lberrexec @err=sp_oagetproperty @srvid,'databases',@dbsid output
if @err<>0 goto lberrexec @err=sp_oamethod @dbsid,'item',@dbid output,@databasename
if @err<>0 goto lberr
exec @err=sp_oamethod @dbid,'getobjectbyname',@tbid output,@objectname
if @err<>0 goto lberr
exec @err=sp_oamethod @tbid,'script',@re output
if @err<>0 goto lberr
returnlberr:
exec sp_oageterrorinfo NULL, @src out, @desc out
declare @errb varbinary(4)
set @errb=cast(@err as varbinary(4))
exec master..xp_varbintohexstr @errb,@re out
select ErrorCode=@re, ErrorSource=@src, ErrorDesc=@desc
returngo
procedure ExecSql(const SQLText: WideString);
var
i:integer;
str:tstringlist;
begin
str:=tstringlist.Create;
try
str.Text:=sqltext;
ADOConnection1.BeginTrans;
with adoquery1 do
begin
close;
sql.Clear;
for i:=0 to str.Count-1 do
begin
if ((copy(trim(str.Strings[i]),1,2)<>'/*') and
(copy(trim(str.Strings[i]),1,2)<>'--') and
(uppercase(copy(trim(str.Strings[i]),1,2))<>'GO')) then
SQL.Add(Str.Strings[i]); if uppercase(copy(trim(str.Strings[i]),1,2))='GO' then
begin
try
ExecSQL;
sql.Clear;
except
on e:exception do
begin
adoconnection1.RollbackTrans;
ErrorBox(e.Message);
exit;
end;
end;
end;
end;
end;
ADOConnection1.CommitTrans;
finally
str.Free;
end;
end;
赋值给adocommand.CommandText中去啊!
你的代码我试了,真的不行!不过还是要谢谢你
示例语句:
if exists (select * from sysobjects where id = object_id(N'[tb_sxlz_data]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [tb_sxlz_data]
if exists (select * from sysobjects where id = object_id(N'[tb_sxlz_report]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [tb_sxlz_report]
上面为test.txt中内容
----------------------------
代码:
AssignFile(f,'test.txt');
Reset(F);
while not SeekEof(f) do
begin
Readln(f,s);
try
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add(s);
Query1.execsql;
Query1.Close;
except
closefile(f);
showmessage('创建数据库失败!');
result := False;
exit;
end;
end;