gpt4 book ai didi

c# - 断开连接后如何重新连接到 SQL Server?

转载 作者:太空宇宙 更新时间:2023-11-03 22:27:05 30 4
gpt4 key购买 nike

我已经为 .NET Compact Framework 和本地 SQL Server 编写了我自己的小型静态 DAL 类,它们正是我需要的; GetTable(SQL,params), Exec(SQL,params), ExecScalar(SQL,Params) 等。我想通过 SQL 做所有事情,所以这就是我滚动的方式,如果有更好的方法来处理 C# 中的 SQL 连接 - 除了 ORM-请告诉我。以下是我如何在我的 DAL 类下授予对 SQLConnection 对象的公共(public)访问权:

    public static SqlConnection Conn()
{
if (ConnStr == "")
Defaults();
try
{

if (conn == null)
conn = new SqlConnection(ConnStr);
if (conn.State != ConnectionState.Open)
{
conn.Open();
Execute("SET DATEFORMAT DMY",null);
}
return conn;
}
catch
{
System.Windows.Forms.MessageBox.Show("Unable to connect to DB");
}
return null;
}

我编写的应用程序正在移动 Windows CE 5.0 上使用。问题是,当用户从无线网络断开连接然后重新连接时,if (conn.State != ConnectionState.Open) 行不会被执行并且应用程序会给出一般数据库异常,没有别的。我该如何解决这个问题?

编辑:原来异常是由 GetTable() 等函数引发的。我可以在每个函数中使用 try-catch 来处理它,但不幸的是,在 Compact Framework 中,每个 sql 错误都被命名为“SqlException”。如何区分连接问题和查询问题?

最佳答案

能否使用 System.Net.NetworkInformation.NetworkInterface 类来检查网络是否可用?

您可以使用 GetIsNetworkAvailable() 在 .NET 2.0 中检查网络连接:

System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()

要监视 IP 地址的变化或网络可用性的变化,请使用 NetworkChange 类中的事件:

System.Net.NetworkInformation.NetworkChange.NetworkAvailabilityChanged
System.Net.NetworkInformation.NetworkChange.NetworkAddressChanged

根据之前的 SO 回答:C# - How do I check for a network connection

关于c# - 断开连接后如何重新连接到 SQL Server?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1007516/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com