SQL SELECT COUNT(*)有时会返回数据

时间:2015-03-13 12:52:07

标签: sql-server vb.net

我很感激我的应用程序中的一些错误可以让我感到困惑!!

我检查表中包含我正在查找的人的PersonID的行数:

cmd.commandtext = "SELECT Count (*) from PeopleDetails where PersonID = '11111'"
count = cmd.executescalar()

98%的时间都有效。 有时,count变量包含来自要查询的行的第一列的数据,这是名为rowid的表中的GUID。它没有满足条件的行数的预期整数。连接是实时的,如果重复查询,则返回正确的计数值。

当服务器在早上第一件事情上,当数据库存在多个同时查询时,这种情况最常见。

非常欢迎!

SQL server 2003,vb.net

感谢您的期待!

1 个答案:

答案 0 :(得分:1)

您是否为每个命令创建了新的SqlConnection?这看起来像是您从多个线程重用相同的SqlConnection

SqlConnection / SqlCommand不是线程安全的,因此您确实希望避免在不同的线程中同时使用它。

一般情况下,不要害怕为您发送的每个命令创建新的SqlConnection(或者至少对于给定的方法范围);启用连接池后,它几乎可以自由地执行此操作,并且可以为您节省很多并发问题。