最近在研究winform,因为这玩意不好用文字描写,所以就没写博客了。不过今天遇到需要大书特书的东西,赶紧记下来免得忘记了。
话说昨天我看了ado.net第一部分的视频,主要讲了SqlConnection,SqlCommand,SqlDataReader。所以我今天就写了个小程序来测试。期间牵扯到写入数据库,根据SQL语句显示数据等等,其中都要先判断一个东西sql数据库的连接状态,当状态为Open时候才能进行读取和写入数据,当状态为Closed时候提示错误要求先打开数据库。
开始我老老实实的在每个操作前写if(conn.State.ToString()=="Closed"){},后来一想,为啥不写一个方法来判断当前连接状态,如果是关闭就中断操作提示错误?每个操作前调用一下就OK了,省时省力。
想法简单,实现起来有难度,开始写的是
private
void connzt()
{
if(conn.State.ToString()==
"Closed")
{
break;
}
}
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
运行报错,提示没有课中断的循环。想了下break确实只能中断循环。
然后问了问别人,知道需要先定义异常,然后用throw抛出异常,之后在外部try中捕获这个异常就可以了。嗯嗯,开干。
首先定义异常类,从系统异常类中继承方法再重写
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
然后定义判断连接的方法调用自己定义的异常类并抛出
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
最后在别的方法中调用它
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
有朋友提示,可以用conn.State==ConnectionState.Closed来判断是否关闭,这个比我那个方便。
大功告成,嘿嘿。
![](https://i-blog.csdnimg.cn/blog_migrate/a495975b89e57dad7518c1f76c1952a4.png)
转载于:https://blog.51cto.com/catmao/278150