本人利用INI文件连接数据库,在form1的formcreate进行连接。然后在button1的click事件中进行判断,如果连接正确,显示一个数,如果不正确则进入form2进行INI文件修改。请问,在button1的click事件中应该怎么写?我写的连接如下:
procedure TForm1.FormCreate(Sender: TObject);
var
Fini:Tinifile;
sql:string;
filename:string;
constring:string;
begin
  filename:=ExtractFilePath(Paramstr (0))+'serverip.ini';
  Fini:=TiniFile.create(filename);
  with Fini do
   try
   sql:=Fini.readstring('server', 'ip', '');//ip是192.168.1.11
   finally
   Fini.destroy;
  end;
 constring:='Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=building;Data Source='''+sql+'''';
 adoconnection1.ConnectionString:=constring;
 adoconnection1.LoginPrompt:=false;
end;

解决方案 »

  1.   

    楼主的问题好象以前问过吧?
    在button1中
    adoconnection1.connected := false;
    try
      adoconnection1.connected := true;
      //显示你的信息
    except
      messagebox(handle,'sysinfo','联接失败',mb_iconerror);
      //弹出窗口
    end;
      

  2.   

    你这么写就提示SQL SERVER不存在或拒绝访问,为什么?
      

  3.   

    try
        P:=StrAlloc(1024);
        IniFile := TInifile.Create(G_IniPath);
        ServerName := IniFile.ReadString('DBConStr', 'ServerName', '');
        DBName := IniFile.ReadString('DBConStr', 'DBName', 'LXGD');
        UID := IniFile.ReadString('DBConStr', 'UID', 'sa');
        PassWord := IniFile.ReadString('DBConStr', 'PassWord', '');
        NctDecrypt(PChar(PassWord),P);
        PassWord:=P;
        IniFile.Free;
        if (Trim(ServerName) = '') or (Trim(DBName) = '') or (Trim(UID) = '') or (PassWord = '') then
        begin
          MessageBox(Application.handle, PChar('数据库连接配置不正确或未配置,请先配置数据库连接!'), PChar('提示'), 0);
          if not Assigned(Frm_DataBaseSet) then
            Application.CreateForm(TFrm_DataBaseSet, Frm_DataBaseSet);
          Frm_DataBaseSet.ShowModal;
        end else
        begin
          ConStr := 'Provider=SQLOLEDB.1;Password=' + PassWord +
            ';Persist Security Info=True;User ID=' + UID +
            ';Initial Catalog=' + DBName +
            ';Data Source=' + ServerName;
          ADOCon.ConnectionString := ConStr;
          try
            ADOCon.Connected := True;
          except
            on EOleException do
            begin
              MessageBox(Application.handle, PChar('数据库连接失败,请重新配置数据库连接!'), PChar('提示'), 0);
              if not Assigned(Frm_DataBaseSet) then
                Application.CreateForm(TFrm_DataBaseSet, Frm_DataBaseSet);
              Frm_DataBaseSet.ShowModal;
            end;
          end;
        end;
      finally
        StrDispose(P);
      end;
    Frm_DataBaseSet是数据库连接配置的页面,这个过程在数据模块(DM)的create里执行
      

  4.   

    同意fenger8293的,不过没必要为密码特意分配内存空间,而且出于安全考虑,不要将登录密码
    写在Ini配置文件中
      

  5.   

    我也遇到过这种情况,如果把ConnectString写在程序里连接数据库没有问题,但是通过INI读出来以后,明明完全相同的两个字符串(showmessage看出一样)但就是提示“数据库不存在或无法访问”,不知道为什么
      

  6.   

    我现在不是连接有问题,我意思是说。INI文件中的IP是错误的。想进入form2中进行修改。就是怎么进入form2中的问题。如果IP是错误的那么就直接提示数据库不存在或拒绝访问了。怎么才能调用form2进行IP的修改呢
      

  7.   

    数据库连接参数不对的话就创建调用form2让用户重新设置数据库连接参数
      

  8.   

    谁有实例给我发个吧。简单点的 。INI文件设置一个IP就行了。谢谢了。[email protected]
      

  9.   

    try
      adoconnection1.connected:=true; 
      panel1.Caption := '联接数据库成功'; 
    except
        panel1.Caption := '联接数据库失败'; 
        if not assigned(form2) then 
          form2 := TForm2.create(application); 
        form2.showmodal; 
        form2.free; 
        form2 := nil; 
    end;
      

  10.   

    http://www.xrss.cn/Dev/Delphi/200741112216.Html
      

  11.   

    try 
      adoconnection1.connected:=true;  
      ShowMessage('联接数据库成功');  
    except 
      ShowMessage('联接数据库失败');  
      //form2弹出
    end;
      

  12.   

    楼上说的。我做了,IP正确的时候没问题。但是当IP错误的时候进不去form2啊,直接提示数据库不存在或拒绝访问!
      

  13.   

    try
     adoconnection1.connected:=true;   
    except
     form2:=Tform2.create(nil);
     form2.showmodal;
    end;
      

  14.   

    fly_man:
    我是经过加密再保存的,我的加密函数里是用PChar.
    不知道楼主到底有没有明白究竟是怎么做
    try 
      ADOCon.Connected := True; 
    except 
      on EOleException do 
        begin 
          MessageBox(Application.handle, PChar('数据库连接失败,请重新配置数据库连接!'), PChar('提示'), 0); 
          if not Assigned(Frm_DataBaseSet) then 
            Application.CreateForm(TFrm_DataBaseSet, Frm_DataBaseSet); 
            Frm_DataBaseSet.ShowModal; 
        end; 
    end; 
    这里就是当连接发生错误的时候显示对话框,然后创建连接配置的页面.
    你要注意的是当你在delphi环境下运行程序的时候,错误信息是仍然会提示的,单独运行的时候就不会提示错误信息了.