VB net和postgres:使用npgsql获取“操作已在进行中”

时间:2016-05-28 22:33:19

标签: vb.net postgresql visual-studio-2013 npgsql

我正在使用以下代码检索其中的对象(产品)列表和其他列表(大小)。

Dim l As New List(Of Entidades.producto)

Dim c As New NpgsqlCommand("select id, name from product", cn)
Dim r As NpgsqlDataReader = c.ExecuteReader

Do While r.Read

    Dim p As New Entidades.product
    p.ID = r.Item("id")
    p.name = r.Item("name")
    l.Add(p)

    >>> I HAD THE OTHER LOOP HERE BUT HAVING THE SAME ISSUE TRIED TO PUT THE
    READER OUTSIDE OF THIS LOOP.

Loop

r.Close()

For Each p In l
    c = New NpgsqlCommand("select t.id id, t.name nombre from productsize pt join size t on t.id = pt.sizeid where productid = :productid order by ord", cn)
    c.Parameters.AddWithValue("productid", pgsqlTypes.NpgsqlDbType.Integer, p.ID)
    c.Prepare() <---- HERE I GET THE ERROR

    Dim rt As NpgsqlDataReader = c.ExecuteReader

    Do While rt.Read

        Dim t As New size
        t.ID = rt.Item("id")
        t.nombre = rt.Item("name")
        p.size.Add(t)

    Loop

Next


Return l

当我执行准备工作时,我收到“操作已在进行中”错误。

我认为关闭读者就足够了,所以我可以运行另一个。

任何人都有同样的问题?

谢谢我提前

1 个答案:

答案 0 :(得分:0)

实际上,我发现了这个问题。第二个循环没有关闭阅读器,当我再次调用该功能时,它爆炸了。

感谢史蒂夫的提示。