一直以来都使用AdoQuery.sql.add('')方法来执行sql,但这样只能执行一条sql语句,直到有一天,我想用AdoQuery来执行一大堆的清除数据库的语句,才知道使用loadFromFile方法极其方便。例程如下:
procedure TFrmMain.BtnExecClick(Sender: TObject);
var
? ClearDbQry:TAdoQuery;
? AppPath:string;
begin
? AppPath:=ExtractFilePath(application.ExeName );
?ClearDbQry:=TAdoQuery.create(application);
????? CleardbQry.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Password=UNISTOLLLINK;Initial Catalog=db;Data Source=.';
????? try
??????? ClearDbQry.close;
??????? ClearDbQry.SQL.LoadFromFile(AppPath+'ClearDbData.sql');
??????? ClearDbQry.ExecSQL;
??????? showmessage('清除成功!');
??????? application.Terminate;
????? except
??????? on e: Exception do showmessage(e.Message);
????? end;
????? ClearDbQry.Free;
end;
遗留问题:
?????? 利用loadFromFile倒入的Sql语句可以是insert、delete、create table、alter table、drop table等,但在执行create view 和 create procedure 等时不能再一个文件中放置多条这类语句,并且这些语句必须是第一句,这可是个缺陷!