База данных запросов из цикла считывателя

У меня проблема с запросом базы данных из цикла чтения:

Using cn As NpgsqlConnection = getConnection()
 Using t As NpgsqlTransaction = cn.BeginTransaction()
 Using cmd As New NpgsqlCommand("SELECT tab_id, i1, d1, rez1, b FROM " & myfirstTable & " WHERE bdoc='" & bdoc.ToString & "' ORDER BY b", cn)
 Using reader1 As NpgsqlDataReader = cmd.ExecuteReader()

 --------------> ''GOES HERE
 | While (reader1.Read())
 | Dim sifra As Integer = CInt(reader1("sifra"))
 | 
 | Using icmd As New NpgsqlCommand("SELECT dtbl_id FROM " & mysecondTable & " WHERE dtbl_id>" & firstfree.ToString & " AND kni::int=0 ORDER BY dtbl_id LIMIT 1", cn)
 | 
 --------------------------- ''FROM HERE
 firstfree = CInt(icmd.ExecuteScalar())
 End Using ''cmd

 End While
 End Using ''reader
 End Using ''cmd
 t.Commit()
 End Using
 End Using

В то время как цикл read's.read я должен получить целое число от первого запроса к базе данных. Моя команда работает хорошо, тестируя в pgAdmin. Но в показанной программе нет. Когда firstfree = CInt (icmd.ExecuteScalar()) будет запущен '' ИЗ ЗДЕСЬ, программа переходит к новому шагу цикла '' GOES ЗДЕСЬ

Здесь что-то явно неверно и как это сделать?

Вот функция getConnection.

Public Function getConnection() As NpgsqlConnection

 Dim chkCon As New NpgsqlConnection(String.Format( _
 "Server={0};Port={1};User Id={2};Password={3};Database={4};Preload Reader = true;", _
 dbServer, dbPort, dbUser, dbPass, mydatabase))
 Try
 chkCon.Open()
 Catch ex As Exception
 Return Nothing
 End Try

 Return chkCon
End Function
1 ответ

Я не понимаю, что такое ваш язык и т.д., Но мне кажется, что у вас есть два очевидных опечатка в ваших циклах.

Например, следует:

End Using ''cmd

быть

End Using ''icmd

и должны

End Using ''reader

быть

End Using ''reader1

Во всяком случае, это похоже на проблему синтаксиса цикла, поэтому я бы посмотрел на отладку как.net-проблему, а не на проблему PostgreSQL.

licensed under cc by-sa 3.0 with attribution.