我正在将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
答案 0 :(得分:0)
如您其他帖子所述,您可以(并且应该)做以下两件事之一:
创建自己的记录集类。大概需要不到30分钟的时间。然后,您只需很少改动即可使用现有代码。
您还(确实)确实需要与这里的每个人共享vb.net中将要使用或计划使用或当前正在使用的数据对象的种类。 (或询问您应该使用哪种数据对象)。
您是否正在使用数据集? 您是否正在使用数据表? 您正在使用iList吗?
.net有一个GAZZILLION选项,范围从“ iList”,还有更多我未在此处列出的选项。因此,对于您当前使用的内容我们几乎一无所知。
我将进行一次大FAT WILD猜测并假定为数据表。
假设我们使用数据表,那么您的代码将类似于:
ListItem
所以,代替
var DateOrder = names.OrderByDescending(x => x.Date)
.Select(x => new { Text = $"{x.Name} {x.Age} {x.DOB} {x.Male}", Value = x.Name })
.ToList();
lstByDate.DataSource = DateOrder;
lstByDate.DataValueField = "Value";
lstByDate.DataTextField = "Text";
您将拥有:
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
答案 1 :(得分:0)
首先,ADODB是一个COM组件,因此从理论上讲您可以继续使用它。但这并不是真正的建议,因为它确实有一些啤酒和口哨,但并非没有问题。 Ado.Net的存在是有原因的,而不仅仅是因为他们喜欢编写新代码来完成相同的事情。
其次,如果您使用数据读取器,那么bof(在第一个记录之前)会有些相关,但是如果您使用数据适配器来填充表格,则不会。它要么有记录,要么没有。如果您想/需要继续使用诸如记录集之类的东西,那将是一个datreader ...虽然没有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