各位大虾小弟处涉DELPHI很菜想问一下,如何用ADO+INI文件动态连接数据库(MS SQL),最好细一点!谢谢各位大虾了。

解决方案 »

  1.   

    将连接字符串放在INI中  最好是加密的在程序里面读取然后连接啊
      

  2.   

    http://www.yesky.com/20020320/1602633.shtml另一种方式就是 UDL
      

  3.   

    大哥是DELPHI7.0啊 不是C++阿!如果各位有好的电子图书可以发给我!谢谢!QQ:10016055
    邮箱:[email protected]可以额外加分
      

  4.   

    procedure TDM_DataBase.DataModuleCreate(Sender: TObject);
    Var
    ConStr,PassWord,UID,DBName,ServerName:String;
    IniFile:TIniFile;
    begin
    //*****************************************************************//
            {从INI配置文件读取数据库连接设置}
    {Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=Lxgd;Data Source=TY-024}
    //*****************************************************************//
    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','');
    PassWord := Decryptstr(PassWord,G_Key);
    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;
    end;
      

  5.   

    [DBConStr]
    ServerName=192.2.2.84
    DBName=LXGD
    UID=sa
    PassWord=7062
    配置文件是这样的.连接不成功时ShowModal配置Form
      

  6.   

    编译的时候有错误!还有就INI文件怎么配置
      

  7.   

    你操作INI文件,在uses中有没有引用IniFiles啊!!!
      

  8.   

    这种还是不安全的,只要动态跟踪内存,就可以看到ConnectionStr的明文了,然后用查询分析器等就可以连接到你的数据库服务器了。
      

  9.   

    Oracle有种机制可以避免非法客户端访问,SQL Server 2000不行,SQL Server2005好像也没有。
      

  10.   

    “这种还是不安全的,只要动态跟踪内存,就可以看到ConnectionStr的明文了,然后用查询分析器等就可以连接到你的数据库服务器了。”你说应该用什么方法安全呢?
      

  11.   

    想要内存中的数据仍然被保护,只有对EXE文件进行加壳,而且只能是加密壳,这样的壳,可以对EXE进行有效的压缩和加密,运行的时候是运行的壳,然后壳再内存中释放EXE文件并执行,但在执行的时候有守护进程,别人是没办法对此进程进行查看内容的,也就是被加密了,呵呵。