C#,我可以在读取时从SQL Server表中插入和删除它

时间:2016-03-30 15:43:58

标签: c# sql sql-server locking

一切都在标题中。

我正在阅读SqlCommand的结果(这是table1和table2的连接查询)。

   using (SqlCommand cmd = new SqlCommand(sqlCommand, eve.Database))
   {
        using (SqlDataReader sdr = cmd.ExecuteReader())
        {
            //Performing some tasks
        }
   } 

实际上在"执行某些任务"部分,我在我的一个连接表上做了一些INSERTDELETE(例如我们将讨论table1)。

我目前在一家公司实习,代码在少量数据上运作良好,但我的导师告诉我这不是一个好主意,因为我可能在我的表格中有一些读写问题因为SQL Server锁。

我想补充一下,为了触发我的INSERT和DELETE,我只是打开一个新的连接(所以我没有使用主连接)并且我正在执行ExecuteNonQuery()调用

using (SqlConnection cnx = Piivo.Utils.Open(Configuration))
{
     SqlCommand cmd = new SqlCommand(command, cnx);
     cmd.ExecuteNonQuery();
}

2 个答案:

答案 0 :(得分:0)

当且仅当Select命令已经完全执行,但是你不能在同一个表上插入或删除,如果select命令仍在执行,因为,它们都在执行SqlCommand一个特定的表需要一个"单个"打开连接。

答案 1 :(得分:0)

众所周知,我现在无法在庞大的数据集上对此进行测试,我必须从这些锁定中获得自己的保护。 我想我必须将SELECT的结果存储到DataTable对象中,关闭我的连接,然后我就能安全地插入和删除。但是我可能在这个SELECT中有很多结果,我不确定这个解决方案是否是最优的但是我没有选择。

感谢您的解释。