Как использовать условие If .eof ИЛИ .bof в vb.net? - PullRequest
0 голосов
/ 14 февраля 2019

Я конвертирую приложение vb6 в vb.net и в нем в качестве условия используются .eof и .bof.Я не понимаю, как выполнить эти условия в vb.net

sSql = "Select * From SPCsetup"
    Set dbConn = New ADODB.Connection
    Call openDBconn(dbConn)
    Set rsConn = dbConn.Execute(sSql)
If rsConn.EOF Or rsConn.BOF Then
            bFlag = False
        Else
            bFlag = True
        End If

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

Ну, во-первых, ADODB является COM-компонентом, поэтому теоретически вы можете просто продолжать его использовать.Но на самом деле это не рекомендуется, так как в нем есть пиво и свистки, они не без собственных проблем.Ado.Net существуют по определенной причине, и не только потому, что им нравится писать новый код, чтобы сделать то же самое.

Во-вторых, если вы используете datareader, тогда bof (перед первой записью) несколько уместен, но если вы используетеDataadapter для заполнения таблицы это не так.У него либо есть записи, либо нет.Если вы хотите / должны продолжать использовать что-то вроде набора записей, тогда это будет считыватель данных ... нет BOF, но вам это действительно не нужно.Вы обнаружите, что ничего не было возвращено тем, что ничего не было возвращено.

sSql = "Select * From SPCsetup"
Using dbConn = New SqlConnection(connctionString)
    dbConn.Open() 
    Using dbCmd = dbConn.CreateCommand()
      dbCmd.CommandText = sSql
      Using dbReader = dbCmd.ExecuteReader
         bFlag = false
         While dbReader.Read
          bFlag = true
          'Do something 
         End While
      End Using
    End Using
End Using
0 голосов
/ 14 февраля 2019

Как отмечено в других ваших постах, вы можете (и должны) сделать одну из двух вещей:

Создать свой собственный класс набора записей.Это займет менее 30 минут.Затем вы можете использовать свой существующий код с ОЧЕНЬ небольшими изменениями.

И вам ТАКЖЕ (но на самом деле) нужно поделиться со всеми здесь КАКОМ ВИДОМ объекта данных, который вы собираетесь использовать или планируете использовать или планируете использовать.В настоящее время используется в vb.net.(или спросите, какой тип данных вы должны использовать).

Используете ли вы набор данных?Вы используете данные?Используете ли вы iList?

.net имеет выбор GAZZILLION, начиная от «iList», и множество других, которые я НЕ перечислил здесь.Таким образом, мы не имеем ни малейшего представления о том, ЧТО вы используете в настоящее время.

Я собираюсь сделать БОЛЬШОЙ УГРОЗНЫЙ ДИАЛОГ и предположить, что он может быть датирован.

Если предположить, что мы используем объект данных, то ваш код будет чем-токак:

Dim tblHotels As New DataTable
Dim strSQL As string = "select * from tblHotels"
Dim DataReader As New SqlDataAdapter(strSQL, My.Settings.SQLCon1string)
DataReader.Fill(tblHotels)

If tblHotels.Rows.Count = 0 Then
   bFlag = False
Else
   bFlag = True
End if

Таким образом, вместо

If tblHotels.EOF  then

Вы бы получили:

 If tblHotels.Rows.Count = 0 Then
...