怎样用代码来实现数据库的连接,不用控件。在动态链接库dll中连接数据库?

解决方案 »

  1.   

    ADOConnection1,此对象不存在啊
      

  2.   

    几个用来连接数据库的函数:1. Mssfunction ConnMss(Conn: TADOConnection; ServerName, DBName, Logid,
      PassWord: string; var sErr: string): boolean;
    var
      str:string;
    begin
      //判断连接控件是否存在
      if not Assigned(Conn) then
      begin
        result:=false;
        sErr:='所需 TADOConnection 控件不存在';
        exit;
      end;
      
      //连接数据库
      str:='Provider=SQLOLEDB.1;'+
           'User ID='+Logid+';'+
           'Password='+Password+';'+
           'Initial Catalog='+DBName+';'+
           'Data Source='+ServerName;
      try
        Conn.Close;
        Conn.LoginPrompt:=false;
        Conn.ConnectionString:=str;
        Conn.Open;
      except
        result:=false;
        sErr:=GetConnErrs(Conn);
        exit;
      end;      
      result:=true;
    end;2. MDB
    function TSeaFun.ConnMDB(Conn: TADOConnection; FileName: string;
      var sErr: string; UserID,Password:string; ConnMode:integer): boolean;
    var
      str:string;
    begin
      //判断连接控件是否存在
      if not Assigned(Conn) then
      begin
        result:=false;
        sErr:='所需 TADOConnection 控件不存在';
        exit;
      end;
      
      //连接 mdb 数据库
      str:='Provider=Microsoft.Jet.OLEDB.4.0;'+
           'Data Source='+filename+';'+
           'User Id='+UserID+';Password='+Password;
      try
        Conn.Close;
        Conn.Mode:=GetConnMode(ConnMode);
        Conn.LoginPrompt:=false;
        Conn.ConnectionString:=str;
        Conn.Open;
      except
        result:=false;
        sErr:=GetConnErrs(Conn);
        exit;
      end;  result:=true;
    end;3. dBase.DBF
    function TSeaFun.ConnDBF(Conn: TADOConnection; FileName: string;
      var sErr: string; ConnMode:integer): boolean;
    var
      str:string;
    begin
      //判断连接控件是否存在
      if not Assigned(Conn) then
      begin
        result:=false;
        sErr:='所需 TADOConnection 控件不存在';
        exit;
      end;
      
      //连接数据库
      str:='Provider=Microsoft.Jet.OLEDB.4.0;'+
           'Data Source='+FileName+';'+
           'Extended Properties=dBase 5.0;'+
           'Persist Security Info=False';
      try
        Conn.Close;    
        Conn.Mode:=GetConnMode(ConnMode);
        Conn.LoginPrompt:=false;
        Conn.ConnectionString:=str;
        Conn.Open;
      except
        result:=false;
        sErr:=GetConnErrs(Conn);
        exit;
      end;  result:=true;
    end;4. DSN 的方式连接 DBF
    function TSeaFun.ConnDBF_dsn(Conn: TADOConnection; DsnName: string;
      var sErr: string; ConnMode: integer): boolean;
    var
      str:string;
    begin
      //判断连接控件是否存在
      if not Assigned(Conn) then
      begin
        result:=false;
        sErr:='所需 TADOConnection 控件不存在';
        exit;
      end;
      
      //连接数据库
      str:='Provider=MSDASQL.1;Persist Security Info=False;Data Source='+ DsnName;
      try
        Conn.Close;    
        Conn.Mode:=GetConnMode(ConnMode);
        Conn.LoginPrompt:=false;
        Conn.ConnectionString:=str;
        Conn.Open;
      except
        result:=false;
        sErr:=GetConnErrs(Conn);
        exit;
      end;  result:=true;
    end;
      

  3.   

    5. 利用 ODBC 连接 DBF
    function TSeaFun.ConnDBF_odbc(Conn: TADOConnection; FileName: string;
      var sErr: string; ConnMode: integer): boolean;
    var
      str:string;
    begin
      //判断连接控件是否存在
      if not Assigned(Conn) then
      begin
        result:=false;
        sErr:='所需 TADOConnection 控件不存在';
        exit;
      end;
      
      //连接数据库
      str:='Driver={Microsoft Visual Foxpro Driver};'+
           'sourcetype=DBC;'+
           'sourceDB='+ FileName +';'+
           'Exclusive=No;';
      try
        Conn.Close;    
        Conn.Mode:=GetConnMode(ConnMode);
        Conn.LoginPrompt:=false;
        Conn.ConnectionString:=str;
        Conn.Open;
      except
        result:=false;
        sErr:=GetConnErrs(Conn);
        exit;
      end;  result:=true;
    end;6.利用 VFPOLEDB 连接 DBF 或 DBC
    function TSeaFun.ConnVFP(Conn: TADOConnection; PathSource: string;
      var sErr: string; ConnMode:integer): boolean;
    var
      str:string;
    begin
      //判断连接控件是否存在
      if not Assigned(Conn) then
      begin
        result:=false;
        sErr:='所需 TADOConnection 控件不存在';
        exit;
      end;
      
      //连接数据库
      str:='Provider=VFPOLEDB.1;'+
            'Data Source='+ PathSource +';'+
            'Password="";'+
            'Mode=ReadWrite;'+
            'Collating Sequence=MACHINE';
      try
        Conn.Close;
        Conn.Mode:=GetConnMode(ConnMode);
        Conn.LoginPrompt:=false;
        Conn.ConnectionString:=str;
        Conn.Open;
      except
        result:=false;
        sErr:=GetConnErrs(Conn);
        exit;
      end;  result:=true;
    end;7. 连接 Excell 文件(Excel 也可以看作成数据库的)
    function TSeaFun.ConnXLS(Conn: TADOConnection; FileName: string;
      var sErr: string): boolean;
    var
      str:string;
    begin
      //判断连接控件是否存在
      if not Assigned(Conn) then
      begin
        result:=false;
        sErr:='所需 TADOConnection 控件不存在';
        exit;
      end;  //判断文件是否存在
      if not FileExists(FileName) then
      begin
        result:=false;
        sErr:='文件 '+FileName+' 不存在';
        exit;
      end;
      
      //连接数据库
      str:='Provider=Microsoft.Jet.OLEDB.4.0;'+
           'Data Source='+filename+';'+
           'Extended Properties="Excel 8.0;HDR=Yes"';
      try
        Conn.Close;
        Conn.LoginPrompt:=false;
        Conn.ConnectionString:=str;
        Conn.Open;
      except
        result:=false;
        sErr:=GetConnErrs(Conn);
        exit;
      end;  result:=true;
    end;
      

  4.   

    说明一下:我这几个函数都是写在一个类中的,还使用到了一个用的错误信息的函数 GetConnErrs
    所以,你看看那些 连接参数就可以了使用 VFPOLEDB 需要安装他的驱动程序function TSeaFun.GetConnErrs(Conn: TADOConnection): string;
    var
      i:integer;
    begin
      result:='';
      if not Assigned(Conn) then
        exit;
      if Conn.Errors.Count>0 then
      begin
        for i:=0 to Conn.Errors.Count-1 do
          if result='' then
            result:=Conn.Errors.Item[i].Description
          else
            result:=result+#13#10+Conn.Errors.Item[i].Description;
      end;
    end;
      

  5.   

    那不叫需要控件,TADOConnection 是用来连接数据库的 ADO 控件,这个是必须的可以理解为数据库连接后的接收点
    否则,你怎么知道连接好了呢?(顺便一句:静下心来看看书吧,会比来 CSDN 问问题好多了)
      

  6.   

    uses adodb,....var a:tadoconnection;
        b:tadoquery;
    begin
    CoInitialize(nil);
    a.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=pause;Data Source=SERVER2';
    a.LoginPrompt:=false;
    a.Connected:=true;
    b.Connection:=a;
    b.SQL.Clear;
    b.Active:=false;
    b.SQL.Add('select * from users where users='+quotedstr(number));
    b.Active:=true;我用这一段代码,但编译没问题,运行就出错了
      

  7.   

    你的a和b对象在调用以前要先创建,你在begin后面加入a := tadoconnection.create;b := tadoquery.create;试试
      

  8.   

    对象的创建函数你最好传递一个参数给它:self,这样可以在程序中止时有系统释放改对象所占用的资源。
      

  9.   

    a := tadoconnection.create  //编译不能通过啊
      

  10.   

    force2004():
      无窗体的情况下怎样在程序中止时有系统释放改对象所占用的资源?
      

  11.   

    uses adodb,....var a:tadoconnection;
        b:tadoquery;
    begin
    a := tadoconnection.create;// 要先创建才行。
    CoInitialize(nil);
    a.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=pause;Data Source=SERVER2';
    a.LoginPrompt:=false;
    a.Connected:=true;
    b.Connection:=a;
    b.SQL.Clear;
    b.Active:=false;
    b.SQL.Add('select * from users where users='+quotedstr(number));
    b.Active:=true;
      

  12.   

    我一般用一个udl数据链接文件,这样可以通过这个文件配置数据库。
    IF Conn.Connected then Conn.Connected := False;  conn.ConnectionString:='FILE NAME='+ExtractFilePath(Application.ExeName)+'datebase.udl';
      Try
        Conn.open;
      Except
        MessageDlg('数据库连接失败!',Mterror,[mbok],0);
      end;
      

  13.   

    可是从delphi程序中对此上的dll文件传参数
    function querystudentcheekcard(number:integer):boolean;stdcall;
    当传过去随意的一个整数后,接收的number的值都为1243260,这是怎回事啊?