1
我正是如此运行一个简单的选择查询:选择Npgsql的间歇查询不返回行
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
的SQL命令是:
Select id, application, datetimestamp, status, data, attemptcount from queue where application='reportengine' and status=4 and datetimestamp <= now() order by datetimestamp limit 1
我有时会得到0行返回。
如果我在pgAdmin中运行完全相同的查询,但它在我的程序中失败,它会按预期返回一行。
如果我关闭并重新打开它的连接,但我无法确定连接是否有任何问题。
我每次都可以重新打开连接,但我宁愿不按照需要重新创建连接。
我也收到间歇性错误,如“未知的服务器响应”,我正在捕捉并重新打开连接。
任何想法,为什么连接是如此的脆弱,是有检查实际连接状态,一种廉价的方式?
THX, 布拉德
你是对的!这不是我第一个使用npgsql的多线程应用程序,但是这次我确实试图通过共享类共享线程之间的连接。我会重构。 – 2012-07-18 21:14:09