zoukankan      html  css  js  c++  java
  • Delphi 执行SQL脚本/执行SQL GO 脚本语句

    Delphi 执行SQL脚本/执行SQL GO 脚本语句

    注意:文件的编码格式,最好要统一,ANSI编码或UNICODE编码

    方法1:

    var
      s: string;
      sqltext: string;
      sqlfile: TextFile;
    begin
      if OpenDialog1.Execute then
      begin
        AssignFile(sqlfile, OpenDialog1.FileName);
        FileMode := 0;
        Reset(sqlfile);
        try
          ADOConnection1.BeginTrans;
          while not eof(sqlfile) do
          begin
            Readln(sqlfile, s);
            sqltext := s;
            while (not eof(sqlfile)) and (uppercase(trim(s)) <> 'GO') do
            begin
              Readln(sqlfile, s);
              if (uppercase(trim(s)) <> 'GO') then
                sqltext := sqltext + ' ' + s;
            end;
            adoquery1.Close;
            adoquery1.SQL.Clear;
            adoquery1.SQL.Add(sqltext);
            adoquery1.ExecSQL;
          end;
          CloseFile(sqlfile);
          ADOConnection1.CommitTrans;
          application.MessageBox('SQL执行完成!', '提示', MB_OK + MB_ICONINFORMATION);
        except
          raise exception.Create('SQL执行失败!');
          ADOConnection1.RollbackTrans;
        end;
      end;
    end;

    方法2:(这里要注意:脚本语句中 go 一定要换行)

    var
      I: Integer;
      S: string;
    begin
     with TStringList.Create do
     try
        LoadFromFile('test.sql');
        S := '';
        for I := 0 to Count - 1 do begin
          if SameText(Trim(Strings[I]), 'GO') then begin  // SameText 不区分大小写  读取到GO 就执行一次代码
             with ADOQuery1 do begin
               Close;SQL.Clear;
               SQL.Text:=sSQL;
               ExecSQL;
             end;
            S := '';
          end else S := S + Strings[I] + #13#10;
        end;
        if S <> '' then
         begin
           with ADOQuery1 do begin
              Close;SQL.Clear;
              SQL.Text:=sSQL;
              ExecSQL;
           end;
         end;
     finally
         Free;
     end;
     end;  
    

      

    创建时间:2020.09.16  更新时间:

    博客园 滔Roy https://www.cnblogs.com/guorongtao 希望内容对你所有帮助,谢谢!
  • 相关阅读:
    信号、事件与状态
    信号处理机制的范式分析
    三寒两倒七分饱
    血热的人吃什么好
    消息、信息与信号的区别
    Busy waiting
    事件的处理机制:单播、广播、链式路由、职责链。
    事件处理:pull与push
    响应式编程
    类、组件、人机交互
  • 原文地址:https://www.cnblogs.com/guorongtao/p/13678241.html
Copyright © 2011-2022 走看看