query1.Active;
query1.Close;
query1.sql.Clear;
query1.SQL.Add('select * from dbo.T_txttodb');
//query1.Prepare;
//query1.ExecSQL;
query1.Open;
以上是真实源代码,为什么用open 方法可以得出结果,而用EXECSQL方法结果集却是空的?

解决方案 »

  1.   

    ExecSQL:不返回结果集,用于Insert,Update等操作!!
    Open:返回结果集,用于Select等操作!!!如果你的SQL 语句是Insert,Update等不返回数据集的语句而执行Open的话,系统会抛出异常!!
      

  2.   

    Open一般用于需返回数据集的语句,如Select * from tablename
    ExecSQL一般用于UPDATE,DELETE,INSERT语句
      

  3.   

    open是sql语句要返回数据集时用的(如:select )
    execsql是执行不需要返回数据集时使用的(如:insert ,update,delete,select into,create等)
      

  4.   

    一个返回记录集。
    一个不返回记录集。
    Open常用于Select
    ExecSql常用于insert Update delete 等等
      

  5.   

    open 返回结果集
    ExecSQL 不返回结果集
    select 是返回结果集的SQL语句,所以用open
    像Insert,Update等用ExecSQL 
      

  6.   

    对于不用返回结果集的要用execsql
    反之则用open;
    insert ,update,delete就要用到execsql;
    select就要用open
      

  7.   

    Open方法只能用来执行SQL语言的查询语句(Select命令),并返回一个查询结果集。ExecSQL方法除了可执行Select语句外还可执行其它SQL语句(如Update、Insert、Delete等),此方法不返回执行的结果。在程序设计过程中,有时不能确定SQL语句是否会返回一个查询,所以一般采用Try…Except模块保证程序的正确运行。Try Query1.Open  ExceptQuery1.Exec SQL  END       上面的代码执行顺序是:首先用OPen方法执行,如果有错误,则会用Exec SQL方法     执行。
      
      

  8.   

    ExecSQL 过程
    他执行SQL语句。与OPEN不同的是,他不返回查询结果,适合与执行
    Insert Update  Delete 语句,而Open()实用与执行Select 语句。实例:
    Query1.close;
    Query1.SQL.Clear;
    Query1.SQL.Add('Delete From Country Where Name=''Argentina''');
    Query1.ExecSQL;
      

  9.   

    对于不用返回结果集的要用execsql
    反之则用open;
    insert ,update,delete就要用到execsql;
    select就要用open
     说得对,例子:
    with query1 do
     close;
     SQL.Clear;
     SQL.Add('Delete From Country Where Name=''England''');
     ExecSQL;
      

  10.   

    对于不用返回结果集的要用execsql
    反之则用open;
    insert ,update,delete就要用到execsql;
    select就要用open
     说得对,例子:
    with query1 do
     close;
     SQL.Clear;
     SQL.Add('Delete From Country Where Name=''England''');
     ExecSQL;