2016-02-09 79 views
0
[DllImport("libpq", EntryPoint = "PQfinish", CallingConvention = CallingConvention.Cdecl)] 
    internal static extern void PQfinish(IntPtr connection); 
    private static void Close(IntPtr connection) 
    { 
     PQfinish(connection); 
    } 

当尝试关闭与PostgreSQL数据库的连接时,我有这个iterop代码来从我的asp.net点网核心调用PQfinish。Postgres libpq调用PQfinish崩溃

由于不明原因,它可能会工作一次,然后它崩溃,并使整个网站停止工作。

我可以打开连接,执行查询,检索结果没有任何问题。只调用PQfinish总是崩溃。

的PostgreSQL 9.5 x64的

+0

你可以肯定'连接'是无效的。多一点的代码会有所帮助。 –

回答

0

我们有我们的libpq包装的C++类似的问题。

它看起来像是在PQfinish调用中崩溃,但这是因为我们在结果上使用了PQclear(并释放了PGresult)后返回了查询的PGresult。

当后来我们想使用PGresult的应用程序崩溃。

我们的解决方案是返回从PGresult复制的字符串,然后用PQclear将其释放。

检查你是否没有这样做。