delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks
Delphi 如何通过配置ini文件去连接SQL Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiDB/html/delphi_20061221172852177.html
请问大家   Delphi如何通过配置ini文件去连接SQL?  
  大家有没相应的例子或代码?  
  由于是第一次接触这方面的操作,所以希望大家帮个忙.

这个首先有一个配置好的INI文件,然后在连接数据库之前读出INI文件的配置信息来连接SQL就可以了

首先你要会对INI进行处理,INI文件读写DELPHI中有一个类TIniFile,利用这个类型你就可以方便地创建及读写INI文件了.

////ini  
  [ServerInfo]  
  ServerIP=.  
  SQLDBName=aaaa  
  SQLUserID=sa  
  SQLPwd=sa  
   
   
  /////////////  
  var  
          FileName:string;  
      begin  
   
          FileName:=ExtractFilePath(   application.ExeName)+'resource\conf.ini';  
          with   TInifile.Create(Filename)   do  
          begin  
              ServerIP:=ReadString('ServerInfo','ServerIP','');  
              SQLDBName:=ReadString('ServerInfo','SQLDBName','');  
              SQLUserName:=ReadString('ServerInfo','SQLUserID','');  
              SQLPwd:=ReadString('ServerInfo','SQLPwd','');  
              Destroy;  
          end;  
   
   
   
   
  ///////////  
   
  ADOConnection1.ConnectionString:='Provider=SQLOLEDB.1;Password='+  
          SQLPwd+  
          ';Persist   Security   Info=True;'+  
          'User   ID='+  
          SQLUserName+  
          ';Initial   Catalog='+  
          SQLDBName+  
          ';Data   Source='+  
          ServerIP;  
 

三楼的基本差不多了,不过,密码最好进行加密!这种多的是,你可以随便找的。

谢谢大家的帮忙!

三楼正解

密码要进行加密.

我找了一些关于密码加密的例子,看后总觉得有些模糊,  
  请问朋友们,可不可以给些相应的详细些的例子给我看看啊?  
  毕竟头一次接触这样的例子,还是不太明白.

三楼的ADOConnection1.ConnectionString   的这个是怎么配置的啊,我在编译的时候老是说这里错误,未定义

配置的问题搞定了,谢谢大家!  
   
  但关于加密的问题还是希望大家能给我指导一下.  
  我是这样想的:   先定义两个字符串key和str   作为明钥和密钥.str是key倒过来的对应的字符串.  
  关于对应的加密,解密代码怎么写啊?我想了这么久,还是没弄会.  
  加密后再如何应用到三楼的代码中去啊,希望大家指点一下,我实在弄不好了.  
 

[039D2D4968B58091]  
  6294E987F260513A=93F7BB025CD2ECE209FB77C6868074E3  
  16CC3532BB7A98DF=198E4BB5584F94BF  
  E7EBACCB860DAAFE=198E4BB5584F94BF  
  13AE07A60EF35373=0AB3345601A7728A  
   
  这是我的配置

[039D2D4968B58091]                
  6294E987F260513A=93F7BB025CD2ECE209FB77C6868074E3       //服务器  
  16CC3532BB7A98DF=198E4BB5584F94BF                                       //数据库名  
  E7EBACCB860DAAFE=198E4BB5584F94BF                                       //用户  
  13AE07A60EF35373=0AB3345601A7728A                                       //密码

可不可以给个具体的例子或算法给我啊

加密你可一左移右移什么的来实现,加密算法用别人的你放心么?????

我是用来参考啊,我现在是不知道如何着手

 
  //db_con.ini       这是你的配置文件  
  [ServerInfo]  
  ServerIP=.  
  SQLDBName=aaaa  
  SQLUserID=sa  
  SQLPwd=sa  
   
   
   
   
  //这是你的数据库连接单元文件中有关数据库连接函数  
      function   Get_Db_Con_Str(FileName:String):String;  
      var  
          ServerIP,SQLDBName,SQLUserName,SQLPwd:string;  
      begin  
          Result   :=   '';  
          with   TInifile.Create(Filename)   do  
          begin  
              try  
                  ServerIP:=ReadString('ServerInfo','ServerIP','');  
                  SQLDBName:=ReadString('ServerInfo','SQLDBName','');  
                  SQLUserName:=ReadString('ServerInfo','SQLUserID','');  
                  SQLPwd:=ReadString('ServerInfo','SQLPwd','');  
              finally  
                  Free;  
              end;  
              Result   :=   'Provider=SQLOLEDB.1;Password='+SQLPwd+';Persist   Security   Info=True;User   ID='+SQLUserName+';Initial   Catalog='+SQLDBName+';Data   Source='+ServerIP;  
          end;  
   
   
  //使用  
    var  
        Ini_FileName:String;  
   
    //.....    
       
    Ini_FileName:=ExtractFilePath(   application.ExeName)+'db_con.ini';  
    if   not   FileExists(Ini_FileName)   then  
    begin  
        ShowMessage('数据库连接配置文件不存在!');  
        Application.Terimate;  
    end;        
    with   ADOConnection1   do  
        Connection   :=   False;  
        ConnectionString:=Get_Db_Con_Str(Ini_FileName);  
        try  
            Connection   :=   True;  
            //.....  
        except  
            ShowMessage('数据库连接失败!请检查配置文件:'+Ini_FileName);  
            //....  
        end;  
    end;  
 

给你一个简单的:  
  procedure   TFrmSrv.BtnSaveClick(Sender:   TObject);  
  var   I:integer;  
  begin  
      Pwd:=EdtPwd.Text;  
      for   I:=1   to   length(pwd)   do  
      begin  
      pwd[i]:=chr(ord(pwd[i])xor   4);  
      end;  
      myinifile:=Tinifile.Create(ExtractFilePath(paramstr(0))+'\setup.ini');  
      myinifile.writestring('Setup','Data_Source',EdtSrv.text);  
      myinifile.writestring('Setup','Initial_Catalog',EdtDB.text);  
      myinifile.writestring('Setup','User_ID',EdtUser.text);  
      myinifile.writestring('Setup','Password',Pwd);  
      myinifile.Free;  
      end;  
  end;

象上面的这样子保存和读取都是一样的,取的时候再进行一次就行了。ok?

哈,能直接用了

posted on 2008-12-11 10:09 delphi2007 阅读(491) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。