我正在捕获异常,我想将其写入 SQL Server,但我的程序没有写入...
我没有收到任何错误,但是在 SQL Server 中我没有发现任何东西......
catch (Exception f)
{
String error = f.ToString();
SqlConnection konekt = new SqlConnection(connectionstring);
SqlCommand prikaz = new SqlCommand("insert into ERROR_LOG (ULOHA, OPERACE, POPIS, MESSAGE, DATUM) values ('3', '3', 'Chyba v ExportNOHEL', @error, @datum)", konekt);
konekt.Open();
prikaz.Parameters.AddWithValue("@error", error);
prikaz.Parameters.AddWithValue("@datum", DateTime.Now);
prikaz.ExecuteNonQuery();
konekt.Close();
}
你知道问题出在哪里吗?
最佳答案
如果您没有收到任何错误,并且您 100% 确定您确实在写入正确的数据库,那么您可能有一个环境事务,例如 TransactionScope
(这是回滚你的交易)
检查这一点的方法是在 konekt.Close();
上放置一个断点,然后切换到 SQL 查询分析器并执行
select * from error_log (NOLOCK)
查看日志是否存在。如果是,然后在您继续编写代码时回滚,您可以按如下方式抑制环境事务:
using (new TransactionScope(TransactionScopeOption.Suppress))
using (var konekt = new SqlConnection(connectionstring))
using (var prikaz = new SqlCommand("insert into ERROR_LOG (ULOHA, OPERACE, POPIS, MESSAGE, DATUM) values ('3', '3', 'Chyba v ExportNOHEL', @error, @datum)", konekt))
{
konekt.Open();
prikaz.Parameters.AddWithValue("@error", "ASASAS");
prikaz.Parameters.AddWithValue("@datum", DateTime.Now);
prikaz.ExecuteNonQuery();
konekt.Close();
}
关于c# - 捕获异常并保存到 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18896840/