首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#测试SQL Server是否打开的有关问题

2013-03-27 
C#测试SQL Server是否打开的问题。用C#测试SQL Server是否“正在运行”,可直接使用SqlConnection的Open方法,

C#测试SQL Server是否打开的问题。
用C#测试SQL Server是否“正在运行”,可直接使用SqlConnection的Open方法,没有捕获异常时认为SQL Server“正在运行”,否则为连接失败。
测试的时候,SQL Server 2000 SP4和测试程序运行与同一台计算机。

我在一个窗体里面加入了一个按钮,按下按钮则开始测试。
当SQL Server处在运行状态时,程序弹出“连接成功”提示框,此时不退出测试程序,停止SQL Server,重新测试连接,仍得到“连接成功”提示。如果此时退出测试程序,重新打开测试,则显示“连接失败”。
请问测试程序没有退出的时候,是否有缓存保留了SQL连接信息?
应该如何处理,才能每次都得到正确的测试结果?

// 测试SQL连接
void BtnTestClick(object sender, EventArgs e)
{
string _connString= "Data Source=" +  tbSqlIP.Text + 
";Initial Catalog=" + tbSqlDatabase.Text + 
";User ID=" + tbUser.Text + 
";pwd=" + tbPwd.Text + ";";

using(SqlConnection sqlConn= new SqlConnection(_connString))
{
try
{
sqlConn.Open();
MessageBox.Show("Sql连接成功!","恭喜",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
}
catch(Exception)
{
MessageBox.Show("Sql连接失败,请检查设置参数与网络连接!","警告",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
finally
{
sqlConn.Close();
sqlConn.Dispose();
}
}
}

[解决办法]
连接池的问题,可以在里面执行一个查询语句。
[解决办法]
首先你这段代码写得有点问题,自己写try..catch..就不要用using了。
然后你这个问题可能和Open方法的实现有点关系,我没有看到源码,我猜可能是首先判断OpenSate,打开连接之后,状态就存保存在OpenState里,当你dispose了con之后,这个对象就返回给连接池,在你关闭了数据库之后,这个连接仍然没有真正关闭,当你再次调用时,连接池返回这个对象给你,Open方法执行成功,你可以禁用连接池再测试一下。

热点排行