c# - 捕获异常并保存到 SQL Server

标签 c# sql sql-server exception

我正在捕获异常,我想将其写入 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/

相关文章:

c# - 同时使用 TCP 和 UDP 套接字

mysql - SQL 在 SUM() 上使用 FORMAT()

mysql - 更新语句未更新数据库中的正确值

.net - 在 SQL Server 2005 中使用 .net 程序集

c# - MVC 查看替代内容

c# - 有效地找到给定点所在的 Delaunay 三角剖分面

c# - 对 int 中的单个字节进行操作的最快方法

java - Oracle通过jdbc创建的函数处于无效状态

sql - 点后四舍五入到2个数字

sql - 为什么这个看起来缺少空格的 SQL 查询可以工作?