我用如下代码设置连接远程数据库,可是要是我在edtServerIP栏输入的IP要是错了就卡在那不动.输对了还挺正常的.
是不是我程序哪出问题了.求高手帮忙.
unit Unit9;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Inifiles, StdCtrls, Buttons, DB, ADODB;type
TForm1 = class(TForm)
ADOConn: TADOConnection;
edtServerIP: TEdit;
BitBtn1: TBitBtn;
ADOQuery1: TADOQuery;
Label1: TLabel;
procedure BitBtn1Click(Sender: TObject);
procedure edtServerIPChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
myinifile:TInifile;
implementation{$R *.dfm}procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ADOconn.ConnectionString:='Provider=SQLOLEDB.1;Integrated Security=SSPI;'+
'Persist Security Info=False;Initial Catalog=lzz;Data Source='+edtServerIP.Text+';'+
'Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation '+
'ID='+edtServerIP.Text+';Use Encryption for Data=False;Tag with column collation when possible=False';
begin
try
if not adoconn.connected then adoconn.connected := true;
adoquery1.close; adoquery1.sql.clear;
adoquery1.sql.add('select * from lzz');
adoquery1.open;
Application.MessageBox('已连接上数据库,测试成功! ', '提示信息', MB_OK or MB_ICONINFORMATION);
except
adoconn.connected:= false;
Application.MessageBox('无法连接上数据库,测试失败! ', '提示信息', MB_OK or MB_ICONERROR);
end;
end;
end;procedure TForm1.edtServerIPChange(Sender: TObject);
begin
if edtServerIP.Text <> '' then
BitBtn1.Enabled:=true;
end;procedure TForm1.FormCreate(Sender: TObject);
var
FileName:string;
begin
FileName:=ExtractFilePath(Paramstr(0))+'lzz.ini';
myinifile:=TInifile.Create(FileName);
ADOConn.ConnectionString:=myinifile.ReadString('连接设置','ADOConn','127.0.0.1');
end;procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
myinifile.WriteString('连接设置','ADOConn',ADOConn.ConnectionString);
myinifile.Destroy;
end;end.
是不是我程序哪出问题了.求高手帮忙.
unit Unit9;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Inifiles, StdCtrls, Buttons, DB, ADODB;type
TForm1 = class(TForm)
ADOConn: TADOConnection;
edtServerIP: TEdit;
BitBtn1: TBitBtn;
ADOQuery1: TADOQuery;
Label1: TLabel;
procedure BitBtn1Click(Sender: TObject);
procedure edtServerIPChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
myinifile:TInifile;
implementation{$R *.dfm}procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ADOconn.ConnectionString:='Provider=SQLOLEDB.1;Integrated Security=SSPI;'+
'Persist Security Info=False;Initial Catalog=lzz;Data Source='+edtServerIP.Text+';'+
'Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation '+
'ID='+edtServerIP.Text+';Use Encryption for Data=False;Tag with column collation when possible=False';
begin
try
if not adoconn.connected then adoconn.connected := true;
adoquery1.close; adoquery1.sql.clear;
adoquery1.sql.add('select * from lzz');
adoquery1.open;
Application.MessageBox('已连接上数据库,测试成功! ', '提示信息', MB_OK or MB_ICONINFORMATION);
except
adoconn.connected:= false;
Application.MessageBox('无法连接上数据库,测试失败! ', '提示信息', MB_OK or MB_ICONERROR);
end;
end;
end;procedure TForm1.edtServerIPChange(Sender: TObject);
begin
if edtServerIP.Text <> '' then
BitBtn1.Enabled:=true;
end;procedure TForm1.FormCreate(Sender: TObject);
var
FileName:string;
begin
FileName:=ExtractFilePath(Paramstr(0))+'lzz.ini';
myinifile:=TInifile.Create(FileName);
ADOConn.ConnectionString:=myinifile.ReadString('连接设置','ADOConn','127.0.0.1');
end;procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
myinifile.WriteString('连接设置','ADOConn',ADOConn.ConnectionString);
myinifile.Destroy;
end;end.
解决方案 »
- delphi 中用sql语句整理表字段值,三个iif语句就报错
- Edit 如何显示上一次输入的信息
- 关于TwwDbGrid中嵌入checkbox问题
- 有编写外挂经验的朋友请进~~~100等着你
- 请教!!我怎么设置,让我的DELPHI向网站上的数据库里取数据或加数据??
- 当焦点不在一个编辑框时,条码枪获得数据跑那去了
- 有没有什么函数可以将十六进制的字符串转成十进制的呢?
- 求表达式正确与否的校验算法
- help me??????????????????
- 看完了<delphi5从入门到精通>对COM技术还是不太懂,谁能简明扼要的说给我听听啊!!多打打比喻,举举例子!!!
- 皮肤控件中的bsSkinMDITabsBar的Tab标签如何加上Ico图标?
- 好久没来,冒个泡
你可以设置一下connectiontimeout短一点,这样连接的时间短点
这没什么好办法。 看我有需求,比如要求较高可以尝试先 telnet 下SqL开放的端口,这样效率会高些