如何在 vb.net 中使用 If .eof OR .bof 条件?
How to use If .eof OR .bof condition in vb.net?
我正在将 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
正如您在其他帖子中提到的,您可以(并且应该)执行以下两项操作之一:
创建您自己的记录集class。可能需要不到 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
嗯,首先,ADODB 是一个 COM 组件,因此理论上您可以继续使用它。但这并不是真的推荐,因为虽然它确实有一些啤酒和口哨,但它们并非没有问题。 Ado.Net 存在是有原因的,不仅仅是因为他们喜欢编写新代码来做同样的事情。
其次,如果您使用数据读取器,那么 bof(在第一条记录之前)有点相关,但如果您使用数据适配器来填充 table,则不是。它要么有记录,要么没有。如果你 want/need 继续使用像记录集这样的东西,那将是一个数据阅读器......没有 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
我正在将 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
正如您在其他帖子中提到的,您可以(并且应该)执行以下两项操作之一:
创建您自己的记录集class。可能需要不到 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
嗯,首先,ADODB 是一个 COM 组件,因此理论上您可以继续使用它。但这并不是真的推荐,因为虽然它确实有一些啤酒和口哨,但它们并非没有问题。 Ado.Net 存在是有原因的,不仅仅是因为他们喜欢编写新代码来做同样的事情。
其次,如果您使用数据读取器,那么 bof(在第一条记录之前)有点相关,但如果您使用数据适配器来填充 table,则不是。它要么有记录,要么没有。如果你 want/need 继续使用像记录集这样的东西,那将是一个数据阅读器......没有 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