在delphi中能不能象VB中使用  
dim Con as new adodb.connection
dim Rs as new adodb.recordset
这样的语句定义数据库连接和数据库的查询结果集呢?如果有的话,该怎么做呢,最好能有详细的操作步骤.如果没有的话,怎么才能做到界面元素与数据库操作的完全分离呢?就是说,在界面单元代码部分里,看不到任何和数据库有关的操作,包括sql语句,字段名称什么的。如果可以实现完全分离,那么应该怎么做呢?可以有个简单的例子源码吗?

解决方案 »

  1.   

    //你是指调原生的ADO吗?DELPHI可以做到如下:
    procedure TForm1.Button1Click(Sender: TObject);
    var
     adoset: Variant;
     x:string;
    begin
    adoset := CreateOleObject('ADODB.RecordSet');
    adoset.Open('SELECT * FROM test','Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source=E:\temp\db1.mdb;Persist Security Info=True');
    x:=adoset.Fields[0];
    ShowMessage(x);
    adoset := Unassigned;
    end;
    //不过,一般没必要这样做,要使界面与查询分开,很简单,只要建一个UTIT(无界面的),将查询放在里面就可以了如:
    unit test;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, DB, ADODB;implementation
    procddure test;
    var
      mysql:TADOQuery;
    begin
       mysql:=TADOQuery.create;
       mysql.connectstring:='Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source:=E:\temp\db1.mdb;Persist Security Info=True'
      mysql.sql.text:='select * from test';
      mysql.open;
      ...
    end;
    end.
      

  2.   

    后台代码:unit Unit2;interfaceuses DB, ADODB;function f:TDataSource;implementationfunction f:TDataSource;
    var ADOConnection1:TADOConnection;
        DataSource1:TDataSource;
        ADOQuery1:TADOQuery;
    begin
      ADOConnection1 := TADOConnection.Create(nil);
      DataSource1 := TDataSource.Create(nil);
      ADOQuery1 := TADOQuery.Create(nil);
      with ADOConnection1 do
      begin
        Connected := False;
        LoginPrompt := False;
        ConnectionString := 'Provider=MicroSoft.Jet.OLEDB.4.0;' +
                            'Data Source=C:\db1.mdb;' +
                            'Persist Security Info=False';
        Connected := True;
      end;
      DataSource1.DataSet := ADOQuery1;
      
      with ADOQuery1 do
        begin
          Close;
          Connection := ADOConnection1;
          SQL.Text := 'select * from test';
          Open;
        end;
      Result:=DataSource1;
    end;end.前台代码:
    uses Unit2;procedure TForm1.Button1Click(Sender: TObject);
    begin
      DBGrid1.DataSource:=f;
    end;
      

  3.   

    要这么复杂干吗?扔个ADOQUERY,写写false,true;connectionstring,sql不就都可以搞定.
    效率一样的。
      

  4.   

    如果不想让人家看你的数据库连接和数据库操作,建议你用DLL来封装,我没试验过,估计可行1