delphi可否不用ODBC直接连接Access?为什么我的连接不起来?
还有就是我现在的数据库只能拿ODBC连接,拿到别的机器上就运行错误?是不是ODBC的原因,如何自动配置?请指教,谢谢!!!

解决方案 »

  1.   

    用ado方便多了!3个控件就可以了,而且vc,vbdelphi都可以用!爽
    给我分我可以教你方法!@
      

  2.   

    用ADO,设计时
    ADOQuery1:TADOQuery
    DataSource1:TDataSource
    ADOConnection:TADOConnectionDataSource1.DataSet = ADOQuery1
    ADOQuery1.Connection = ADOConnection1在FormCreate事件中
    ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ExtractFilePath(Application.ExeName)+'doctor.mdb;Persist Security Info=False';
    ADOQuery1.SQL.Add('Select * From Doctor');
    ADOQuery1.Active:=True;
      

  3.   

    确认BDE是否引擎,即必须有Borland的数据库支持,你可以先安装Delphi程序后,在运行你的程序。
      

  4.   

    odbc可通过修改注册表实现自动配置
      

  5.   

    自动设置odbcprocedure Tsche_mainform.autoodbc();
    var
      registertemp:tregistry;
      my_driver,dir_name:string;
      i:integer;
      index:array[1..10] of integer;
    begin
      //创建一个registry实例
      registerTemp:=TRegistry.Create;
      with registerTemp do
        begin
          Rootkey:=HKEY_CURRENT_USER;
          if openkey('Software\ODBC\ODBC.INI\ODBC data sources',true)then
            if readstring('shays')<>'' then
             exit
            else
             begin
               //设置根键值为HKEY_LOCAL_MACHINE
               Rootkey:=HKEY_LOCAL_MACHINE;
               // 找到Software\ODBC\ODBCINST.INI\Microsoft Access Driver (*.mdb)
               if openkey('Software\ODBC\ODBCINST.INI\Microsoft Access Driver (*.mdb)',true)then
                 my_driver:=readstring('Driver')
               else
                 begin
                   Application.MessageBox('增加ODBC数据源失败','警告',MB_ICONHAND);
                   exit;
                 end;
          closekey;      Rootkey:=HKEY_CURRENT_USER;
          if openkey('Software\ODBC\ODBC.INI\ODBC data sources',true)then
            writestring('shays','Microsoft Access Driver (*.mdb)')
          else
            begin
              Application.MessageBox('增加ODBC数据源失败','警告',MB_ICONHAND);
              exit;
            end;
          closekey;      //找到或创建Software\ODBC\ODBC.INI\shays,写入DSN配置信息
          if openkey('Software\ODBC\ODBC.INI\shays',true)then
            begin
              dir_name:=ExtractFilePath(Application.ExeName);
              for i:=1 to 10 do
                index[i]:=0;          i:=1;
              while Pos('\',dir_name)>0 do
                begin
                  index[i]:=Pos('\',dir_name);
                  dir_name[Pos('\', dir_name)]:= '/';
                  i:=i+1;
                end;
              dir_name:=ExtractFilePath(Application.ExeName);
              dir_name:=leftstr(dir_name,index[i-3]);//根据实际目录定下exe文件的目录          //数据库目录
              writestring('DBQ',dir_name+'data\shays.mdb');
              //数据源描述
              writestring('Description','我的数据库设置');
              //驱动程序DLL文件
              writestring('Driver',my_driver);
              //驱动程序标识
              writeinteger('DriverId',25);
              //Filter依据
              writestring('FIL','MS Access;');
              //支持的事务操作数目
              writeinteger('safeTransaction',0);
              //用户名称
              writestring('UID','');
            end
           else
            begin
              Application.MessageBox('增加ODBC数据源失败!','警告',MB_ICONHAND);
              exit;
            end;
          closekey;      //找到或创建software\ODBC\ODBC.INI\shays\Engines\Jet
          if openkey('software\ODBC\ODBC.INI\shays\Engines\Jet',True)then
            begin
              writestring('implicitcommitsync','');
              //缓冲区大小
              writeinteger('maxbuffersize',512);
              //页超时
              writeinteger('pagetimeout',10);
              //支持的线程数目
              writeinteger('threads',3);
              writestring('usercommitsync','yes');
            end
           else
            begin
              Application.MessageBox('增加ODBC数据源失败!','警告',MB_ICONHAND);
              exit;
            end;
          closekey;
        end;
      Free;
      end;
    end;
      

  6.   

    连接字符串是:
    "Provider=Microsoft.Jet.OleDb.4.0; data source=mydata.mdb"
      

  7.   

    使用ADO连接,用相对路径;最后程序打包很方便!
      

  8.   

    用ado有个问题:
    如果我用的数据库文件是access2000的,而有些用户的机器是win98,其驱动是3.51的,这样他们就打不开数据库了。
    通常的办法是升级ado,但不知道只换一下ODBCJT32.DLL可不可以?
    由于手头没有环境一直都没试过,是否有哪位兄台知道。