我用ADOConnection和sql连接,在自己的机器上运行调试没有问题,但是到其他机器上就出错了,我想是ADOConnection的属性设置有错误!
请问我该如何动态的设置ADOConnection使得在每台机器上都可以运行,该如何设置用户名称呢?
如果我给了一台机器的名称,那么如何设置ADOConnection,使得ADOConnection与sql的连接不会出错?
请大家帮忙解决,一定给分!!
请问我该如何动态的设置ADOConnection使得在每台机器上都可以运行,该如何设置用户名称呢?
如果我给了一台机器的名称,那么如何设置ADOConnection,使得ADOConnection与sql的连接不会出错?
请大家帮忙解决,一定给分!!
解决方案 »
- 中文字符串是怎么比较的
- wise install 的问题
- ActiveForm为何每次都要出现下载提示?
- 请问要注意哪些问题(难题啊)
- 问个问题,一个文本编辑软件,需要里面也可以插图,需要如何读取、保存资料?用什么控件最理想?
- 向美国商品索要发票
- ▁▂▃▄高手请进,关于汉字拼音的问题▄▃▂▁
- 谁有这个问题上的代码?http://www.csdn.net/expert/topic/836/836925.xml?temp=.4008142
- 在delphi6中,调用outlook时如何加上附件,如能解决高分相送!
- 日期转换?
- 如何判断word文件已打开或已关闭????在线等待!!!!!
- Locate方法怎么实现多个条件下的查询
DATABASE NAME=<数据库名>
SERVER NAME=<IP>
USER NAME=<登录用户名>
PASSWORD=<登录密码>
SQLPASSTHRU MODE=SHARED NOAUTOCOMMIT[参数]
DriverName=MSSQL[SYBASE.....]
procedure ReadIniFile();
Var IniFile : TIniFile;
begin
IniFile := TIniFile.Create(ExtractFileDir(Application.ExeName)+'\lang.ini');
//IniFile.ReadSectionValues('数据库', Database1.Params);
Try
DBParam.DataBaseName := IniFile.ReadString('数据库','DATABASE NAME','');
DBParam.ServerName := IniFile.ReadString('数据库','SERVER NAME','');
DBParam.UserName := IniFile.ReadString('数据库','USER NAME','');
DBParam.PassWord := IniFile.ReadString('数据库','PASSWORD','');
DBParam.SqlMode := IniFile.ReadString('数据库','SQLPASSTHRU MODE','');
DBParam.DriverName := IniFile.ReadString('参数','DriverName','');
finally
IniFile.Free ;
end;
end;
INI文件内容如下:
[Database]
Provider=SQLOLEDB.1
Password=ldt2001
Persist Security Info=True
User ID=sa
Initial Catalog=SomeOneWatch_DB
Data Source=YF
然后在程序中写一个读取函数
Function TDataModule1.ReadLoginParams():String;
Var fileName:String;
systeminifile:Tinifile;
begin
Result:='';
Filename:=extractfilepath(paramstr(0))+'Setup.ini';
systeminifile:=tinifile.Create(filename);
try
Result:=Result+'Provider='+Systeminifile.ReadString('Database','Provider','')+';';
Result:=Result+'Password='+Systeminifile.ReadString('Database','Password','')+';';
Result:=Result+'Persist Security Info='+Systeminifile.ReadString('Database','Persist Security Info','')+';';
Result:=Result+'User ID='+Systeminifile.ReadString('Database','User ID','')+';';
Result:=Result+'Initial Catalog='+Systeminifile.ReadString('Database','Initial Catalog','')+';';
Result:=Result+'Data Source='+Systeminifile.ReadString('Database','Data Source','');
Finally
Systeminifile.Destroy;
End;
End;最后在ADOConnection的ONLogin事件中写入
procedure TDataModule1.ADOConnection1Login(Sender: TObject; Username,
Password: String);
begin
AdoConnection1.ConnectionString:=ReadLoginParams();
end;希望对你有帮助。
1,启动时,判断注册表中有没有数据库连接字符串,若有,取出,解密,赋给AdoConnection组件,否则
2,调用PromptDataSource函数,与用户交互,获取SQL连接信息;然后,加密,存放到注册表中;赋给AdoConnection组件。
3,继续其他操作
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, dxEdLib, dxCntner, dxEditor, dxExEdtr,
ExtCtrls, ComObj, DB, ADODB;type
TFrmServerSel = class(TForm)
dxPickEdit1: TdxPickEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
dxEdit1: TdxEdit;
dxEdit2: TdxEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Panel1: TPanel;
dxEditStyleController1: TdxEditStyleController;
Button4: TButton;
ADOTest: TADOConnection;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure dxPickEdit1CloseUp(Sender: TObject; var Value: string;
var Accept: Boolean);
procedure dxEdit1KeyPress(Sender: TObject; var Key: Char);
procedure dxEdit2KeyPress(Sender: TObject; var Key: Char);
procedure Button4Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
FrmServerSel: TFrmServerSel;implementationuses Crypt, UnitCore;{$R *.dfm}procedure TFrmServerSel.FormCreate(Sender: TObject);
begin
Button1Click(nil);
end;procedure TFrmServerSel.Button1Click(Sender: TObject);
var
SQLServer: Variant;
ServerList: Variant;
i, nServers: integer;
begin
SQLServer := CreateOleObject('SQLDMO.Application');
ServerList := SQLServer.ListAvailableSQLServers;
nServers := ServerList.Count;
dxPickEdit1.Items.Clear;
for i := 1 to nservers do
dxPickEdit1.Items.Add(ServerList.Item(i));
SQLServer := NULL;
serverList := NULL;
end;procedure TFrmServerSel.dxPickEdit1CloseUp(Sender: TObject;
var Value: string; var Accept: Boolean);
begin
dxEdit2.SetFocus;
end;procedure TFrmServerSel.dxEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
Key := #0;
dxEdit2.SetFocus;
end;
end;procedure TFrmServerSel.dxEdit2KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
Key := #0;
Button2.Click;
end;
end;procedure TFrmServerSel.Button4Click(Sender: TObject);
begin
AdoTest.ConnectionString := Format('Provider=SQLOLEDB.1;Persist Security Info=True;Data Source=%S;Initial Catalog=taxiCarMIS;User Id=%s;Password=%s', [dxPickEdit1.text, dxEdit1.text, dxEdit2.text]);
try
AdoTest.Connected := True;
MessageBox(Handle, '测试连接成功!', '恭喜', MB_OK or MB_ICONINFORMATION);
AdoTest.Connected := False;
except on E: Exception do
MessageBox(Handle, Pchar('测试连接失败!出错信息如下:' + #13 + E.Message), '提示', MB_OK or MB_ICONERROR);
end;
end;procedure TFrmServerSel.Button2Click(Sender: TObject);
begin
ConnStr := Format('Provider=SQLOLEDB.1;Persist Security Info=True;Data Source=%S;Initial Catalog=*******;User Id=%s;Password=%s', [dxPickEdit1.text, dxEdit1.text, dxEdit2.text]);
ModalResult := mrOK;
end;end.
Forms, Classes, Windows, ExtCtrls, Graphics, Controls, StdCtrls, SysUtils,
DB, ADODB, AdoConEd, IniFiles, jpeg;type
TFrmSplash = class(TForm)
Image1: TImage;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;var
FrmSplash: TFrmSplash;
TimeDelay: integer;implementationuses UnitCore, Crypt, UnitServerSel;{$R *.dfm}procedure TFrmSplash.Timer1Timer(Sender: TObject);
begin
TimeDelay := TimeDelay + 1;
if TimeDelay = 5 then Close;
end;procedure TFrmSplash.FormCreate(Sender: TObject);
var
s: string;
Ini: TiniFile;
begin
TimeDelay := 0;
SysDir := ExtractFilePath(Application.ExeName);
Ini := TiniFile.Create(SysDir + IniName);
try
s := Ini.ReadString('LoginInit', 'ConnectStr', '');
OperatorID := Ini.ReadString('LoginInit', 'DefaultUser', '');
AppTitle := Ini.ReadString('SysInit', 'AppTitle', '');
finally
Ini.Free;
end;
ConnStr := Decrypt(S, 65535);
Application.Title := AppTitle + '管理系统';
end;procedure TFrmSplash.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
s: string;
Ini: TiniFile;
begin
if ((Key = 83) and (ssAlt in shift)) then
begin
Hide;
Timer1.Enabled := False;
with TFrmServerSel.Create(Application) do
try
if ShowModal = mrOK then
begin
s := EnCrypt(ConnStr, 65535);
Ini := TiniFile.Create(SysDir + IniName);
try
Ini.WriteString('LoginInit', 'ConnectStr', s);
finally
Ini.Free;
end;
end;
finally
free;
end;
Close;
end;
end;end.
SysUtils, Classes, DB, ADODB, Forms, dxCntner, ImgList, Controls,
KsSkinEngine, FR_Desgn, FR_Rich;type
TDM = class(TDataModule)
MainConnect: TADOConnection;
dxStyleController: TdxEditStyleController;
SeSkinEngine1: TSeSkinEngine;
SeSkinEngine2: TSeSkinEngine;
frDesigner1: TfrDesigner;
frRichObject1: TfrRichObject;
procedure DataModuleCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
DM: TDM;implementationuses UnitCore;{$R *.dfm}procedure TDM.DataModuleCreate(Sender: TObject);
begin
MainConnect.Connected := False;
MainConnect.ConnectionString := ConnStr;
try
MainConnect.Connected := True;
except on E: Exception do
begin
Application.MessageBox(Pchar('连接失败,请检查,出错信息:' + E.message), '提示信息', 0);
Application.Terminate;
end;
end;
end;end.