想做一个这样的小程序,程序已经与数据库连接好(数据库是SQL SERVER,程序与数据库的连接也已经好了)现在想做一个这样的功能:
程序里有一个文本框,在这个文本框里输入对应脚本的文件名(如TEST.SQL)
点运行按钮,能直接运行此脚本(此脚本在SQL分析器已经测试成功)另外最好能够再添加一个memo之类的,把脚本运行过程显示出来,如我脚本中有print 'step 1.....'
请问如何实现,谢谢

解决方案 »

  1.   

    adoquery1.close;
    adoquery1.sql.loadfromfile(...);
    adoquery1.open;
    但是,print好像是无法取得的
    能取得的只是sql返回的记录集
      

  2.   

    1、ADO
    adoquery1.close;
    adoquery1.sql.loadfromfile(...);
    adoquery1.open;
    2、三层ADO 
      DataModule1.ClientDataSet1.Active:=False;
      DataModule1.ClientDataSet1.LoadFromFile(...);
      DataModule1.ClientDataSet1.Active:=True;
      

  3.   

    做一个memo,把SQL文件,loadfrom 进来,把memo.text赋值线ADOquery.sql,exec一下,OK了
      

  4.   

    请问如何取得SQL返回的记录集,谢谢
      

  5.   

    adoconnection.execute("sql语句",[var]);//还有返回影响行数
      

  6.   

    楼上回答不是楼主想要的,每执行一次,显示成功之类的语句
    print 'step 1.....'
      

  7.   

    执行完写在 写在SQL里 Print 就可以
      

  8.   

    用ADO执行可能会有问题,比如说go语句,ADO的方法就无法执行。
    这种功能我以前写过,最好还是用SQL的批处理进行。在MSSQL2005下可能用SQLCMD来。2000下用什么我就不知道了。
      

  9.   

    oracle 可以用的方法:
    通过 EXEC 调用 sqlplus,可以在sqlplus后添加参数,
    指定输入参数(要执行的脚本文件)和输出参数(脚本文件执行的结果)。
    把文本框的内容作为 sqlplus 的输入参数,
    再把执行 sqlplus 的输出结果文件显示到 memo 上就可以了。sql server 不熟悉,应该有类似功能。
      

  10.   

    如果是非帶參數的sql腳本,直接LoadFromFile,再在memo中處理;與否,直接調用數據集的參數
      

  11.   

    按这个办法创建可以了,但有些脚本不能运行,请问有没有更好的办法
    比如我如下的脚本就不能运行
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[V对帐状态]') and OBJECTPROPERTY(id, N'IsView') = 1)
    drop view [dbo].[V对帐状态]
    GOSET QUOTED_IDENTIFIER ON 
    GO
    SET ANSI_NULLS ON 
    GO
    CREATE VIEW dbo.V对帐状态
    AS
    SELECT TOP 10 *
    FROM (SELECT '普通会员对帐' 名称, 1 序号, CONVERT(bit, 1) 默认
    union
    SELECT '白金会员对帐' 名称, 2 序号, CONVERT(bit, 0) 默认
    union
    SELECT '尊贵会员对帐' 名称, 3 序号, CONVERT(bit, 0) 默认
    ) a
    ORDER BY 序号GO
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO
      

  12.   

    有些脚本包含一些比如go或'(分号)之类的东西,这样的脚本如何能做到也可以直接用delphi运行呢,再次感谢
      

  13.   

    按go把sql分割为n个,分别执行