我正在从mssql填充数据集,我遇到的问题是,当我去检查表计数和行计数以查看它是否为空时,它们都返回一个大于0的值,这意味着它们不是空的但是当我试图访问它们时它们是空的......它们应该是空的,因为为了测试它我清空了我正在击打的桌子。
这是我的代码
Dim da As OdbcDataAdapter
Dim dsProNum As New DataSet
ssql = "SELECT * FROM ProNumberEXP WHERE BillTo = ? and ShipTo = ?"
Try
da = New OdbcDataAdapter(ssql, Me.connString)
da.SelectCommand.Parameters.Add("@BillTo", OdbcType.VarChar).Value = BillTo.Trim
da.SelectCommand.Parameters.Add("@ShipTo", OdbcType.VarChar).Value = ShipTo.Trim
da.Fill(dsProNum)
Catch ex As Exception
dsProNum = Nothing
return False
End Try
If dsProNum.Tables(0).Rows.Count = 0 Then
Found = False
Else
Found = True
End If
dsProNum = Nothing
我的If语句,If dsProNum.Tables(0).Rows.Count = 0 Then
总是返回false,无论我从中提取的内容是什么。
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:0)
如果没有创建DataSet的代码,我只能猜测你在填充之前用DataTable创建了DataSet,或者你是否使用了设计器来创建它,在这种情况下它已经有了一个表。
您应该检查DbDataAdapter.Fill的返回值,而不是检查DataSet是否有任何表。 Fill返回数据集中实际添加或更新的行数。
您还应该考虑使用SqlDataAdapter而不是OdbcDataAdapter,因为它更快,并且支持更多SQL Server功能。