我是新手,我想做一个执行数据库的类,下面是我的类内容:
unit clstheAccess;interfaceUses
  SysUtils, Classes, DB, ADODB, Forms, Dialogs;type
    theAccess=class(TDataModule)
    AdoConn: TADOConnection;
  private
    { Private declarations }
  public
    procedure Conn;
    function ExecuteSQL(strSQL:String;var strMsg:String):integer;
    function ExecuteSQL1(strSQL:String;var strMsg:String;var rsReturn:TADOQuery):integer;
    { Public declarations }
end;var
  gtheAccess:theAccess;implementationprocedure theAccess.Conn;
var
  ConnectionString:String;
begin
    ConnectionString:='User ID=sa;Password=123456;Data Source=;Initial Catalog=master';
    AdoConn.Provider:='SQLOLEDB';
    AdoConn.ConnectionString:=ConnectionString;
    AdoConn.LoginPrompt:= False;
    AdoConn.Mode:= cmShareDenyNone;
    AdoConn.Connected:= True;
end;function theAccess.ExecuteSQL(strSQL: String;var strMsg:String):Integer;
begin
  try
    if not AdoConn.Connected then Conn;
    AdoConn.Execute(strSQL);
    strMsg:='执行SQL语句成功';
    result:=1;
  except
    strMsg:='执行SQL语句失败';
    result:=0;
  end;
end;function theAccess.ExecuteSQL1(strSQL:String;var strMsg:String;var rsReturn:TADOQuery):integer;
var rs:TADOQuery;
begin
  try
    rs:=TADOQuery.Create(Application);
    rs.Connection:=AdoConn;   //这句有错误提示
    if not AdoConn.Connected then Conn;
    rs.SQL.Clear;
    rs.SQL.Add(strSQL);
    rs.Open;
    rsReturn:=rs;
    strMsg:='执行SQL语句成功';
    result:=1;
    rs.Free;
  except
    strMsg:='执行SQL语句失败';
    result:=0;
  end;
end;end.
请大家帮我看看,这是哪里的错

解决方案 »

  1.   

    在调用的时候,首要调用 procedure theAccess.Conn; 过程,否则,你直接调用那个function theAccess.ExecuteSQL1 就会报错的!
      

  2.   

    rs.Connection:=AdoConn;   //这句有错误提示 ,
    //adoConn你初始过了吗,还没初始化就调用能不出错吗
        if not AdoConn.Connected then Conn;这样 
    Conn;
    rs.Connection:=AdoConn;
      

  3.   

    每次执行ExecuteSQL1都要创建出一个TADOQuery来,效率也太低了,,,,不合格   :)
      

  4.   

    Query 本身也不要用:var 去回传啊。直接 function 返回 Query 就行了,最终由调用者释放掉资源。
      

  5.   

    根据楼上的几位指点,那个地方的错误没有了,可新的错误又出来了
    procedure theAccess.Conn; 
    var 
      ConnectionString:String; 
    begin 
        ConnectionString:= 'User ID=sa;Password=123456;Data Source=;Initial Catalog=master '; 
        AdoConn.Provider:= 'SQLOLEDB '; //这里赋值出错了,真是搞不懂
        AdoConn.ConnectionString:=ConnectionString; 
        AdoConn.LoginPrompt:= False; 
        AdoConn.Mode:= cmShareDenyNone; 
        AdoConn.Connected:= True; 
    end; 
    在初始化时,出错
      

  6.   

    Provider为什么不直接写到ConnectionString中呢!
      

  7.   

         你数据库是用ODBC连接的吧   建议改成ADO