以下是我的代码的相关部分:
adapter.Fill(table);
return;
}
catch(Exception ex)
{
SqlException sqlEx = ex as SqlException;我有一个由adapter.Fill()抛出的异常,当我将断点放在异常处理程序的第一行时,Exception.Data属性已经包含了我的应用程序所独有的键。
问题是,它并不是每次都会发生,而只是当这个异常在最后一次抛出的大约2秒内被抛出时才会发生。
解释一下!!
发布于 2010-03-17 05:17:17
根据您引用的错误,我假设您使用的SQL连接信息不正确,或者密码已过期。检查您的连接并在您的环境之外进行测试。
如果您使用的是集成安全性,则可能是未将用户添加到SQL Server安全性,或者用户没有访问数据库的权限。在SQl Server安全性中,有两个步骤:首先将用户作为有效登录添加到SQL Server,然后授予该用户对数据库的访问权限。
发布于 2011-05-16 14:42:19
此page上有一条评论,听起来可能与您所看到的内容有关。
用户(TWheelhouse)说:
从表面上看,某些.NET框架功能试图重用异常的实例,导致添加到'Data‘集合中的标志似乎已被设置,而这些标志实际上只是在抛出异常并添加标志时出现的……
public static void foo(string connectionString) {
try {
SqlConnection cn = new SqlConnection (connectionString);
cn.Open();
}
catch (SqlException ex) {
if (ex.Data.Contains("MY_TEST_FLAG"))
Debug.WriteLine("BAD! It Shouldn't be there yet!");
else
Debug.WriteLine("Fine.");
ex.Data.Add("MY_TEST_FLAG", true);
}
}使用格式有效但UID值可能错误的连接字符串多次调用foo()。你第一次打电话给FOO的时候,我得到的是“Fine”当错误的连接字符串导致连接对象抛出SqlException时,我会收到一条消息,但每次之后,我都会得到" bad !“消息(有一段时间,最终我会再次收到一条“好”的消息,一次,然后是更多的“坏!”消息)。
如果每次我尝试使用错误的连接字符串创建SqlConnection时,都会导致抛出完全唯一的SqlException实例,那么每次我都会收到"Fine“消息!
我自己没有重复这个问题,也没有尝试运行上面的代码,但它似乎与您报告的问题有关。
https://stackoverflow.com/questions/2457807
复制相似问题