放了一个MEMO,BUTTON,ADOQUERY
一、从一个sql脚本文件中读取放入MEMO中
二、点击BUTTON执行该SQL脚本文件如:SQL脚本文件中内容
        CREATE TABLE [msgUser] (
[OLLsh] [int] NOT NULL ,
[UserId] [varchar] (60) NULL ,
[userName] [varchar] (60) NULL ,
[userDName] [varchar] (60) NULL ,
[IconNo] [int] NULL ,
[userBZ] [text] NULL ,
[LastOnLineDate] [datetime] NULL ,
[UserownOrder] [text] NULL ,
[NowOnline] [varchar] (4) NULL ,
[CurIPAddress] [varchar] (50) NULL ,
[CurPort] [int] NULL ,
CONSTRAINT [PK_msgUser] PRIMARY KEY  NONCLUSTERED 
(
[OLLsh]
)  ON [PRIMARY] 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GOCREATE TABLE [MtDy] (
[YyDm] [smallint] NOT NULL ,
[DjDm] [int] NOT NULL ,
[MtHeadPosition] [varchar] (10) NULL ,
[MtDjPosition] [varchar] (10) NULL ,
[IsDaTi] [bit] NOT NULL CONSTRAINT [DF_MtDy_IsDaTi] DEFAULT (0),
[HoXmSetE] [varchar] (200) NULL ,
[HoXmSetC] [varchar] (200) NULL ,
[VeXmSetE] [varchar] (200) NULL ,
[VeXmSetC] [varchar] (200) NULL ,
[DaXmSetE] [varchar] (200) NULL ,
[DaXmSetC] [varchar] (200) NULL ,
[DaXmDataTypeSet] [varchar] (200) NULL ,
[DaXmIsHjSet] [varchar] (200) NULL ,
[HoTreeXmE] [varchar] (20) NULL ,
[HoTreeXmC] [varchar] (50) NULL ,
[VeTreeXmE] [varchar] (20) NULL ,
[VeTreeXmC] [varchar] (50) NULL ,
[TreeDyType] [smallint] NULL ,
[HoTreeLyXmSetE] [varchar] (255) NULL ,
[HoTreeLyXmSetC] [varchar] (255) NULL ,
[VeTreeLyXmSetE] [varchar] (255) NULL ,
[VeTreeLyXmSetC] [varchar] (255) NULL ,
[PreHoTree] [text] NULL ,
[PreVeTree] [text] NULL 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GOvar
  i: integer;
 for i:=0 to memo.line.count-1 do
begin
  with adoquery do
  begin
    close;
    sql.clear;
    sql.add(memo.line[i])
    open; 
 end;
end这样不行,谁有好的办法
delphi  中不能用sql中的go批处理命令吗

解决方案 »

  1.   

    把你要执行的语句写在存储过程里,在Delphi用TADOStoredProc执行它,如
      ADOStoredProc1.Parameters.ParamByName('@var1').Value:='值';
      ADOStoredProc1.ExecProc;
      

  2.   

    close;
    sql.clear;
    sql.add(memo.text)
    open
      

  3.   

    你可以逐行写入query1.sql,然后执行,我们的脚本执行器就是这样实现的;
    i:=0;
    while i< memo1.line.count do
    begin
      query1.sql.add(memo1.line[i]);
      i:=i+1;
    end;
    query1.execsql;
    就可以了
      

  4.   

    我说的是比如:
    你要在sql-server中要把一个数据库的表,视图等
    结构放到另一个创建的数据库中,
    而这个操作要在DELPHI中的BUTTON中的ONCLICK事件中完成,
    我先把要建立的结构生成一个SQL脚本文件,
    然后执行这个脚本文件
    让所要的数据库中创建源数据库中的结构
      

  5.   

    for i:=0 to memo.line.count-1 do
    begin
      with adoquery do
      begin
        close;
        sql.clear;
        sql.add(memo.line[i])
        open;   //问题在这里
     end;
    怎么能行呢?要放在外边的。
      

  6.   

    var
      i: integer;
    for i:=0 to memo.line.count-1 do
    begin
      with adoquery do
      begin
        close;
        sql.clear;
        sql.add(memo.line[i])
     end;
    end
    adoquery1.execsql;