我现在正在做一个程序是个实时监控的,采集的数据实时写入SQL库。SQL服务器在公司服务器上,网内的其它电脑看到的数据是服务器上的。如果网络是正常的没有任何问题,但是如果网络不通时程序就找不到数据库而出错!!请问有什么办法来监视 SQL 是否正常连接,让我的程序不出错???!!
解决方案 »
- Delphi XE2 Update2 xxx
- 有谁来参加英雄大会,报个名,如果有帅哥,我也去,嘿嘿
- 一个数据库操作在有的机上出现问题,有没有人遇到过?
- Delphi讨论区 QQ组
- 高分求助,如何实现像QQ一样的桌面停靠功能?
- 各位高手 怎样在delphi的程序里建一个access数据库啊?
- 抓屏问题
- delphi 7 经常卡死问题,高手来SHOW两招吧!!
- <<<<<<一个有精选的笑话,100分,征求大家对delphi使用sql的心得。
- Delphi高手请进:如何理解记录类型中的Variant部分?
- 关于imagelist的问题
- ExcelApp: Variant和ExcelApp:=CreateOleObject('Excel.application')这两句话一定要写在同一个过程里吗?
function TDataModuleMain.NetConnect: Boolean;
begin
Try
ADODataSetCheckNet.Close;
ADODataSetCheckNet.CommandText:='Select GetDate() as CurrentDateTime';
ADODataSetCheckNet.Open;
CurrentDateTime:=ADODataSetCheckNet.FieldByName('CurrentDateTime').AsDateTime;
Result:=True;
Except
ShowMessage('数据连接中断,请迅速与系统管理员联系!');
Result:=False;
end;
end;
ADOConnection.Connected := True;
procedure Tmainform.Timer2Timer(Sender: TObject);
begin
try
adoconnection1.execut('select 1');
except
adoconnection1.close;
adoconnection1.keepconnection:=false;
adoconnection1.open;
adoconnection1.keepconnection:=true;
end;
end;
object cs: TClientSocket
Active = False
Address = '202.99.0.172'
ClientType = ctNonBlocking
Port = 1433
Left = 32
Top = 48
end
object Timer1: TTimer
Interval = 5000
OnTimer = Timer1Timer
Left = 80
Top = 48
end
end
////////////代码
unit Unit1; interface uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ScktComp, ExtCtrls; const
SERVICE_STOPPED=1; // Stopped
SERVICE_START_PENDING=2; // Starting
SERVICE_STOP_PENDING=3; // Stopping
SERVICE_RUNNING=4; // Running
SERVICE_CONTINUE_PENDING=5; // Restarting after being paused
SERVICE_PAUSE_PENDING=6; // Pausing
SERVICE_PAUSED=7; //Paused type
TForm1 = class(TForm)
cs: TClientSocket;
Button1: TButton;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function SQLSCMGetLocalServiceStateA(lpszSvc: PChar;dwErr:PDWORD): Integer;cdecl;external 'w95scm.dll'; var
Form1: TForm1; implementation {$R *.DFM}
procedure TForm1.Timer1Timer(Sender: TObject);
var
r,e: DWORD;
begin
r := SQLSCMGetLocalServiceStateA('MSSQLServer',@e);
case r of
SERVICE_STOPPED:
ShowMessage('Stoped');
SERVICE_START_PENDING:
ShowMessage('Starting');
SERVICE_STOP_PENDING:
ShowMessage('Stopping');
SERVICE_RUNNING:
ShowMessage('Running');
SERVICE_CONTINUE_PENDING:
ShowMessage('Restarting');
SERVICE_PAUSE_PENDING:
ShowMessage('Pausing');
SERVICE_PAUSED:
ShowMessage('Paused');
end;
end;
jianjunhisa@126.com
同意chenylin(陈SIR) ( ) 信誉:100 的方法
下面写大串代码的人,并不是写得多就一定是你的方法
----------------------------------
敢问:pdcdiy163
你知道chenylin(陈SIR)写的代码里边
ADODataSetCheckNet.Close;
ADODataSetCheckNet.CommandText:='Select GetDate() as CurrentDateTime';
ADODataSetCheckNet.Open;
这些是什么来的么?
adoconnection1.execut('select 1');
这个方法怎么会不行?
结了吧这个贴子