我已经为.NET Compact Framework和本地SQL Server编写了自己的小型静态DAL类,它只是做我需要的; GetTable(SQL,params),Exec(SQL,params),ExecScalar(SQL,Params)等等。我想用SQL来做所有事情,这就是我如何滚动,如果有更好的方法来处理C#中的SQL连接 - 除ORM-请告诉我。以下是我给我的下DAL类到SQLConnection对象的公共访问:如何断开连接时重新连接到SQLServer?
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”。我如何区分连接问题和查询问题?
不幸的是,.NET Compact Framework似乎不支持System.Net.NetworkInformation。 – 2009-06-17 15:06:25