我本来想在form.creat()事件里面判断是否数据库连接成功,但是它提示是说“验证失败”为什么??/帮我改一下!!
代码是:
procedure TForm1.FormCreate(Sender: TObject);
var
    strConn:string;
   /// t:integer;
    ifok:boolean;
   // str1:string;
    //Winpath:pchar;
    db:pchar;
    myinifilepath:pchar;
begin
    form1.ADOConnection1.Close;
    form1.ADOConnection1.ConnectionTimeout :=1;
   form1.ADOConnection1.CommandTimeout:=1;
//    if dm.song_conn.Connected then exit;
    ifok:=true;
    getmem(db,225);
    myinifilepath:=pchar(ExtractFilePath(paramstr(0))+'nsvod.ini');
    GetPrivateProfileString('admin', 'db',nil,db,225,myinifilepath);
    strconn:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+db+';Persist Security Info=true;Jet OLEDB:Database Password= ';
      //form1.ADOConnection1.LoginPrompt:=false;
       try
             with form1.ADOConnection1 do
              begin
                 Connected:=false;
                 ConnectionString:=strConn;
                 Connected:=true;
//                 addmemo('已正常联接主歌曲数据库');
              end;
       except
          ifok:=false;
       end;
 if not ifok then
  begin
          ShowMessage('初始化时出错!,请卸载本系统后重新安装 ');
          close;
          exit;
  end;end;

解决方案 »

  1.   

    给你个函数
    function GetConnectionString(ssource,accesspwd: string): string;
    begin
      Result := '';
      if ssource <> '' then
        Result := 'Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;' +
          'Data Source=' + sSource + ';User ID=Admin;Jet OLEDB:Database Password=' +
          accesspwd;
    end;
      

  2.   

    你的db跟踪到什么值?可能是密码错误,用ADOConnection测试一下,你的代码太乱了
      

  3.   

    还有一个问题就是我在做安装程序以后:
    我用打包程序打包生成的setup文件,在安装以后无法找到数据库
              而在本机是可以运行的
    这是为什么????????????????????????????????????????????????????????????????????????//
      

  4.   

    还有一个问题就是我在做安装程序以后:
    我用打包程序打包生成的setup文件,在安装以后无法找到数据库
              而在本机是可以运行的
    这是为什么????????????????????????????????????????????????????????????????????????//
      

  5.   

    还有一个问题就是我在做安装程序以后:
    我用打包程序打包生成的setup文件,在安装以后无法找到数据库
              而在本机是可以运行的
    这是为什么????????????????????????????????????????????????????????????????????????//
      

  6.   

    在formcreate事件里写是不对的你安装后找不到数据库,是不是你的数据库连接字符串是写死了的
    路径和安装后存放的路径不一样
      

  7.   

    1、客户机有没有MDAC?
    2、你的INI文件里面有没有初始的地址?
    2、觉得你的代码多是无用代码,而且不免清晰,如果只是有ACCESS的话,我觉得完
       全可以用".\数据库名"来指定数据库
      

  8.   

    你的connectiontimeout是不是值给的太小了?!
      

  9.   

    form1.ADOConnection1.ConnectionTimeout :=1;
    太小了吧 改成0试试
      

  10.   

    把你的这句:strconn:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+db+';Persist Security Info=true;Jet OLEDB:Database Password= '
    改成:
    strconn:='Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;' +
          'Data Source=' + sSource + ';User ID=Admin;Jet OLEDB:Database Password=' +
          accesspwd;
      

  11.   

    strconn:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+db+';Persist Security Info=true;Jet OLEDB:Database Password= ';
    跟踪一下 看看他的实际值是什么,尤其是db的值,如果没有问题就把Password=后边的空格去掉试试
      

  12.   

    还有一个问题就是我在做安装程序以后:
    我用打包程序打包生成的setup文件,在安装以后无法找到数据库
              而在本机是可以运行的
    这是为什么????????????????????????????????????????????????????????????????????????//
      

  13.   

    procedure TDM1.DataModuleCreate(Sender: TObject);
    var
      sconstr:string;
      sdbpath:string;
      smm:string;
    begin
      smm:='newspace0411';
      try
        G_StrExePath:=ExtractFilePath(Application.ExeName);
        sdbpath:=G_StrExePath+'AA67.mdb';
        sconstr:='Provider=Microsoft.Jet.OLEDB.4.0;'+
               'User ID=Admin;Data Source='+sdbpath+';'+
               'Mode=Share Deny None;Extended Properties="";'+
               'Locale Identifier=2052;Persist Security Info=False;'+
               'Jet OLEDB:System database="";Jet OLEDB:Registry Path="";'+
               'Jet OLEDB:Database Password='+smm+';'+
               'Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=0;'+
               'Jet OLEDB:Global Partial Bulk Ops=2;'+
               'Jet OLEDB:Global Bulk Transactions=1;'+
               'Jet OLEDB:New Database Password="";'+
               'Jet OLEDB:Create System Database=False;'+
               'Jet OLEDB:Encrypt Database=False;'+
               'Jet OLEDB:Don''t Copy Locale on Compact=False;'+
               'Jet OLEDB:Compact Without Replica Repair=False;'+
               'Jet OLEDB:SFP=False';
        if DM1.ADOCn1.Connected = True then DM1.ADOCn1.Connected:=False;
        DM1.ADOCn1.ConnectionString:=sconstr;
        DM1.ADOCn1.Connected:=True;
      except
        Application.MessageBox('&Icirc;&THORN;·¨&Aacute;&not;&frac12;&Oacute;&Ecirc;&yacute;&frac34;&Yacute;&iquest;&acirc;&pound;&iexcl;','&acute;í&Icirc;ó',MB_OK+MB_ICONSTOP);
        Halt;
      end;end;
      

  14.   

    连接字符串参考这个:S = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+
                          '%s; Persist Security Info=True';
    应该动态的获取数据库文件的路径才能保证在别的机器上能正确运行