Postgresql NPGSQL select查询间歇性地不返回任何行
我正在运行一个简单的select查询:Postgresql NPGSQL select查询间歇性地不返回任何行,postgresql,ado.net,npgsql,Postgresql,Ado.net,Npgsql,我正在运行一个简单的select查询: Private Function ReturnTableQuery(ByVal SQL As String) As DataTable Dim rs As DataTable = New DataTable Dim Adapter As NpgsqlDataAdapter = New NpgsqlDataAdapter Try If conn Is Nothing Then Connect
Private Function ReturnTableQuery(ByVal SQL As String) As DataTable
Dim rs As DataTable = New DataTable
Dim Adapter As NpgsqlDataAdapter = New NpgsqlDataAdapter
Try
If conn Is Nothing Then
ConnectDatabase()
End If
If conn.State <> ConnectionState.Open Then
ConnectDatabase()
End If
Adapter.SelectCommand = New NpgsqlCommand(SQL, conn)
Adapter.SelectCommand.CommandTimeout = 10
Adapter.Fill(rs)
Catch ex As Exception
PreserveStackTrace(ex)
Throw ex
End Try
Return rs
End Function
私有函数ReturnTableQuery(ByVal SQL作为字符串)作为DataTable
Dim rs As DataTable=新数据表
作为NpgsqlDataAdapter的Dim适配器=新的NpgsqlDataAdapter
尝试
如果康恩什么都不是
ConnectDatabase()
如果结束
如果连接状态连接状态打开,则
ConnectDatabase()
如果结束
Adapter.SelectCommand=新的NpgsqlCommand(SQL,conn)
Adapter.SelectCommand.CommandTimeout=10
适配器填充(rs)
特例
保存堆栈跟踪(ex)
投手
结束尝试
返回rs
端函数
SQL命令是:
Select id, application, datetimestamp, status, data, attemptcount from queue where application='reportengine' and status=4 and datetimestamp <= now() order by datetimestamp limit 1
从队列中选择id、application、datetimestamp、status、data、attemptcount,其中application='reportengine'和status=4以及datetimestamp是否在多个线程之间共享连接?Npgsql和其他数据提供程序一样,不是线程安全的。我认为这是造成你问题的最可能原因。您应该打开一个连接,使用它,然后关闭它。这是使用连接池时最具可伸缩性的模式。我希望有帮助 你说得对!这不是我第一个使用npgsql的多线程应用程序,但这次我确实尝试通过共享类共享线程之间的连接。我将重构。