菜鸟问题:如何让TADOConnection不弹出数据库登录对话框,通过什么方法在程序中设定 userid和password 菜鸟问题:如何让TADOConnection不弹出数据库登录对话框,通过什么方法在程序中设定 userid和password 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 LoginPrompt设为False数据库用户名、密码可以存在INI文件里面 INI文件怎么写,能举个例子吗?谢谢! 求教: 怎么写那个ini文件 要利用.INI文件做程序有关数据的存储工作,就需要能读和写.INI文件,所以列了如下方法给大家参考:从.INI文件中获取字符串varstrResult:pchar;beginGetPrivateProfileString('windows', // []中标题的名字'NullPort', // =号前的名字'NIL', // 如果没有找到字符串时,返回的默认值strResult, //存放取得字符100, //取得字符的允许最大长度'c:\forwin95\win.ini' // 调用的文件名);edit1.text:=strResult; //显示取得字符串从.INI文件中获取整数edit1.text:=inttostr(GetPrivateProfileInt('intl', // []中标题的名字'iCountry', // =号前的名字0,// 如果没有找到整数时,返回的默认值'c:\forwin95\win.ini' // 调用的文件名));向.INI文件写入字符串WritePrivateProfileString('windows', // []中标题的名字'load', // 要写入“=”号前的字符串'accca', //要写入的数据'c:\forwin95\win.ini' // 调用的文件名);向.INI文件写入整数WritePrivateProfileSection('windows', // []中标题的名字'read=100', // 要写入的数据'c:\forwin95\win.ini' // 调用的文件名); TADOConnection的LoginPrompt转置为False关于UserId和PassWord,我觉得写入注册表较写入INI安全一点~! 在 ConnectString 中写用 User =xxx; password =xxxx; 关于UserId和PassWord,我觉得写入注册表较写入INI安全一点~!虽然微软推荐这么做,但是注册表庞大以后会影响操作系统的运行。可以对userid ,pw进行加密。解密操作比较好 加入DataBase控件,并连接TQuery控件,设置LoginPrompt:=False user 和 pass我是用ini文件写的这样如果万一数据库中的user 和 pass改了那么只要在ini文件中改一下就行了.而在启动本程序时,在主窗体的onshow或onactive或oncreate中从ini文件中读取connection的connectionstring属性不用改什么注册表,为了安全你可为ini文件加密或放在一个比较安全的目录下面让TADOConnection不弹出数据库登录对话框:将LoginPrompt设为False 用ADO访问数据库的话,把连接字字符串中的那个保存密码的勾给勾上就行了呀! LoginPrompt设为False,userID 和password在database的params中添加。如:Database.Params.Add('Server Name='+ ServerName)//设置数据库路径; Database.Params.Add('Database Name='+ DatabaseName)//设置数据库路径; Database.Params.Add('User Name='+ UserName)//设置数据库路径; Database.Params.Add('Password='+ Password)//设置数据库路径; TADOConnection的LoginPrompt转置为False往注册表里和往INI文件里写都行INI的例子如下:unit IniUnit;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls, inifiles;typeTIniForm = class(TForm)SectionComboBox: TComboBox;Label1: TLabel;CmdSave: TButton;CmdChang: TButton;IdentComboBox: TComboBox;IdentValueEdit: TEdit;Label2: TLabel;Label3: TLabel;procedure FormCreate(Sender: TObject);procedure SectionComboBoxChange(Sender: TObject);procedure FormDestroy(Sender: TObject);procedure CmdChangClick(Sender: TObject);procedure CmdSaveClick(Sender: TObject);procedure IdentComboBoxChange(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varIniForm: TIniForm;{ Delphi中通过TIniFile类读写Windows的初始化文件 }IniFile: TIniFile;implementation{$R *.DFM}procedure TIniForm.FormCreate(Sender: TObject);begin{ 使用TIniFile类的Create成员函数建立TIniFile对象,该对象用来读写d:\ucdos目录中的rdfnt.ini文件,如果读写的文件在Windows的目录里(如system.ini),则可以直接写文件名而不必指定路径 }IniFile:=TIniFile.Create('d:\ucdos\rdfnt.ini');{ 将TIniFile对象关联的初始化文件system.ini中的所有节(即用[]括号括起的那部分)的节名送入下拉式组合列表框SectionComboBox中 }SectionComboBox.Clear;IniFile.ReadSections(SectionComboBox.Items);{ 选择system.ini文件的第一个节名 }SectionComboBox.ItemIndex:=0;SectionComboBoxChange(Sender);CmdSave.Enabled:=False;end;{ 将组合列表框IniComboBox中所选择节中对应的各个变量及对应的值送入多行文本编辑器IniMemo中 }procedure TIniForm.SectionComboBoxChange(Sender: TObject);beginIdentComboBox.Clear;IniFile.ReadSection(SectionComboBox.Text,IdentComboBox.Items);IdentComboBox.ItemIndex:=0;IdentComboBoxChange(Sender);end;procedure TIniForm.IdentComboBoxChange(Sender: TObject);beginIdentValueEdit.Enabled:=False;{ 将选择的关键字值读入 }IdentValueEdit.Text:=IniFile.ReadString(SectionComboBox.Text,IdentComboBox.Text,'');end;procedure TIniForm.CmdChangClick(Sender: TObject);beginCmdSave.Enabled:=True;IdentValueEdit.Enabled:=True;IdentValueEdit.SetFocus;end;procedure TIniForm.CmdSaveClick(Sender: TObject);beginif IdentValueEdit.Modified then beginIniFile.WriteString(SectionComboBox.Text,IdentComboBox.Text,IdentValueEdit.Text);end;IdentValueEdit.Enabled:=False;CmdSave.Enabled:=False;end;procedure TIniForm.FormDestroy(Sender: TObject);beginIniFile.Free; { 释放创建的对象 }end;end. ADOConn.ConnectionString := 'Provider=OraOLEDB.Oracle.1;Password=tiger;Persist Security Info=True;User ID=scott;Data Source=zrh';ADOConn.LoginPrompt := false;ADOConn.Connected := true; ADOCONNECTION.loginprompt:=false;另外我觉得用户名,密码还是保存在注册表里比较好,藏的深一点,这样即使懂注册表想找到的话也得花些工夫! LoginPrompt设为False用户名,密码不管写在哪里,都建议采用异或加密 【bitxunmeng】生日快乐,希望你们能幸福! 高分求救,怎样在报表中打印网格?急!!! 出售外挂源代码,有意购买者入内。 如何屏蔽win按键? 关于行列转换 com注入到目标进程一段时间自动失效,待解决 (delphi7)用TCoolTrayIcon控件来处理窗口的“最小化到托盘”,但如果瑞星杀毒软件开启,程序就不能编译运行,各位大虾,怎么办啊???? 帮忙修改BusinessSkinForm控件的一个小问题!!! 如何原样导出dbrid的数据到excel delphi的光盘出来了吗?请告知 急,关于字段的问题!~~~~~~~~~~~~~~ Bitter_fish(苦鱼) 领分
怎么写那个ini文件
从.INI文件中获取字符串
var
strResult:pchar;
begin
GetPrivateProfileString(
'windows', // []中标题的名字
'NullPort', // =号前的名字
'NIL', // 如果没有找到字符串时,返回的默认值
strResult, //存放取得字符
100, //取得字符的允许最大长度
'c:\forwin95\win.ini' // 调用的文件名
);
edit1.text:=strResult; //显示取得字符串
从.INI文件中获取整数
edit1.text:=inttostr(GetPrivateProfileInt(
'intl', // []中标题的名字
'iCountry', // =号前的名字
0,// 如果没有找到整数时,返回的默认值'c:\forwin95\win.ini' // 调用的文件名
));
向.INI文件写入字符串
WritePrivateProfileString(
'windows', // []中标题的名字
'load', // 要写入“=”号前的字符串
'accca', //要写入的数据
'c:\forwin95\win.ini' // 调用的文件名
);
向.INI文件写入整数
WritePrivateProfileSection(
'windows', // []中标题的名字
'read=100', // 要写入的数据
'c:\forwin95\win.ini' // 调用的文件名
);
可以对userid ,pw进行加密。解密操作比较好
这样如果万一数据库中的user 和 pass改了那么只要在ini文件中改一下就行了.
而在启动本程序时,在主窗体的onshow或onactive或oncreate中从ini文件中读取connection
的connectionstring属性
不用改什么注册表,为了安全你可为ini文件加密或放在一个比较安全的目录下面
让TADOConnection不弹出数据库登录对话框:将LoginPrompt设为False
如:
Database.Params.Add('Server Name='+ ServerName)//设置数据库路径;
Database.Params.Add('Database Name='+ DatabaseName)//设置数据库路径;
Database.Params.Add('User Name='+ UserName)//设置数据库路径;
Database.Params.Add('Password='+ Password)//设置数据库路径;
往注册表里和往INI文件里写都行
INI的例子如下:
unit IniUnit;
interface
usesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls, inifiles;
typeTIniForm = class(TForm)SectionComboBox: TComboBox;Label1: TLabel;CmdSave: TButton;CmdChang: TButton;IdentComboBox: TComboBox;IdentValueEdit: TEdit;Label2: TLabel;Label3: TLabel;procedure FormCreate(Sender: TObject);procedure SectionComboBoxChange(Sender: TObject);procedure FormDestroy(Sender: TObject);procedure CmdChangClick(Sender: TObject);procedure CmdSaveClick(Sender: TObject);procedure IdentComboBoxChange(Sender: TObject);private{ Private declarations }public{ Public declarations }end;
varIniForm: TIniForm;{ Delphi中通过TIniFile类读写Windows的初始化文件 }IniFile: TIniFile;
implementation
{$R *.DFM}
procedure TIniForm.FormCreate(Sender: TObject);begin{ 使用TIniFile类的Create成员函数建立TIniFile对象,该对象用来读写d:\ucdos目录中的rdfnt.ini文件,如果读写的文件在Windows的目录里(如system.ini),则可以直接写文件名而不必指定路径 }IniFile:=TIniFile.Create('d:\ucdos\rdfnt.ini');{ 将TIniFile对象关联的初始化文件system.ini中的所有节(即用[]括号括起的那部分)的节名送入下拉式组合列表框SectionComboBox中 }SectionComboBox.Clear;IniFile.ReadSections(SectionComboBox.Items);{ 选择system.ini文件的第一个节名 }SectionComboBox.ItemIndex:=0;SectionComboBoxChange(Sender);CmdSave.Enabled:=False;end;
{ 将组合列表框IniComboBox中所选择节中对应的各个变量及对应的值送入多行文本编辑器IniMemo中 }procedure TIniForm.SectionComboBoxChange(Sender: TObject);beginIdentComboBox.Clear;IniFile.ReadSection(SectionComboBox.Text,IdentComboBox.Items);IdentComboBox.ItemIndex:=0;IdentComboBoxChange(Sender);end;
procedure TIniForm.IdentComboBoxChange(Sender: TObject);beginIdentValueEdit.Enabled:=False;{ 将选择的关键字值读入 }IdentValueEdit.Text:=IniFile.ReadString(SectionComboBox.Text,IdentComboBox.Text,'');end;
procedure TIniForm.CmdChangClick(Sender: TObject);beginCmdSave.Enabled:=True;IdentValueEdit.Enabled:=True;IdentValueEdit.SetFocus;end;
procedure TIniForm.CmdSaveClick(Sender: TObject);beginif IdentValueEdit.Modified then beginIniFile.WriteString(SectionComboBox.Text,IdentComboBox.Text,IdentValueEdit.Text);end;IdentValueEdit.Enabled:=False;CmdSave.Enabled:=False;end;
procedure TIniForm.FormDestroy(Sender: TObject);beginIniFile.Free; { 释放创建的对象 }end;
end.
ADOConn.Connected := true;
另外我觉得用户名,密码还是保存在注册表里比较好,藏的深一点,这样即使懂注册表想找到的话也得花些工夫!
用户名,密码不管写在哪里,都建议采用异或加密