一切都在标题中。
我正在阅读SqlCommand
的结果(这是table1和table2的连接查询)。
using (SqlCommand cmd = new SqlCommand(sqlCommand, eve.Database))
{
using (SqlDataReader sdr = cmd.ExecuteReader())
{
//Performing some tasks
}
}
实际上在"执行某些任务"部分,我在我的一个连接表上做了一些INSERT
和DELETE
(例如我们将讨论table1)。
我目前在一家公司实习,代码在少量数据上运作良好,但我的导师告诉我这不是一个好主意,因为我可能在我的表格中有一些读写问题因为SQL Server锁。
我想补充一下,为了触发我的INSERT和DELETE,我只是打开一个新的连接(所以我没有使用主连接)并且我正在执行ExecuteNonQuery()
调用
using (SqlConnection cnx = Piivo.Utils.Open(Configuration))
{
SqlCommand cmd = new SqlCommand(command, cnx);
cmd.ExecuteNonQuery();
}
答案 0 :(得分:0)
当且仅当Select命令已经完全执行,但是你不能在同一个表上插入或删除,如果select命令仍在执行,因为,它们都在执行SqlCommand一个特定的表需要一个"单个"打开连接。
答案 1 :(得分:0)
众所周知,我现在无法在庞大的数据集上对此进行测试,我必须从这些锁定中获得自己的保护。 我想我必须将SELECT的结果存储到DataTable对象中,关闭我的连接,然后我就能安全地插入和删除。但是我可能在这个SELECT中有很多结果,我不确定这个解决方案是否是最优的但是我没有选择。
感谢您的解释。