连接数据库问题,检测网络是否断开/或者数据库连接断开。

jacksu19 2008-03-05 01:48:31
我的一个程序,需要在一个实时系统与SQL Server之间保持连接,将实时系统产生的数据写入到数据库中做历史数据。

程序一启动,就需要一直保持与数据库的连接,如果中间因为网络或者系统维护,或者是数据插入异常等原因,程序与数据库的连接可能断开。

这时候就需要检测网络以及和数据库之间的连接是否还有效?
如果连接已经断开,则需要有这么一个机制:尝试重新连接上数据库,直至连接成功。

请教各位,如何实现?
最好有代码...
...全文
160 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
九章落地 2008-03-05
  • 打赏
  • 举报
回复
楼主,你只要操作数据库,通过返回值判断是否出现异常,异常,不单单是连接断开,还包括系统死锁等导致的数据库异常!!!

private bool do()
{

SqlConnection con = new SqlConnection();

try
{
con.Open();
//执行数据库的操作
......

//操作成功,返回TRUE值
return true;
}

catch
{
.....
//操作发生异常,返回FALSE值
return false
}

}


//调用do方法时,判断是否返回真,若不是,重新执行:

while(do()==false){
Console.WriteLine("发生异常");
}
Console.WriteLine("成功");


上面代码手写的,楼主可按思路,自己动手一试
三下鱼 2008-03-05
  • 打赏
  • 举报
回复
以前一直困扰我的一个问题,如何判断数据库连接是否成功(比如sql没有启动,数据库不存在等),实现友好的错误处理,但vbscript的错误处理机制实在太差,只有on error resume nex/go to,但往往使用ADO的错误陷阱后,等待你的将是脚本超时,这个函数将改变这一状况(连接超时长短可以自己根据实际情况控制)

'入口参数:连接字符串strconn
'返回值:TestConnection=true,false

Function TestConnection(strconn)
On Error Resume Next
set conn=server.createobject("adodb.connection")
'这里设定连接超时为10秒
conn.ConnectionTimeout=10
conn.Open strconn
If conn.Errors.Count = 0 Then
TestConnection = True
conn.close
Else
TestConnection = False
End If
set conn=nothing
End Function
FantasyFreed 2008-03-05
  • 打赏
  • 举报
回复
链接
public void getCon()
{
if (con == null)
{
con = new SqlConnection();
}
con.ConnectionString = this.strConn;
try
{
con.Open();
conState = true;
if (cmd == null)
{
cmd = new SqlCommand();
}
cmd.Connection = con;
}
catch (SqlException ex)
{
closeDb();
throw ex;
}
}
关闭
public void closeDb()
{
con.Close();
cmd.Dispose();
con.Dispose();
conState = false;
}
更新
public bool update(string sql)
{
if (!conState)
{
getCon();
}
cmd.CommandType = CommandType.Text;
cmd.CommandText = sql;
try
{
if (cmd.ExecuteNonQuery() > 0)
return true;
else return false;
}
catch (SqlException ex)
{
closeDb();
throw ex;
}
}
在业务逻辑中,例如:update更新错误,一旦发生异常,就从新链接getCon()

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧