0

我正在从 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 dsProNum.Tables(0).Rows.Count = 0 Then无论我从表中提取什么,我的 If 语句总是返回 false。

谁能帮我解决这个问题?

4

1 回答 1

0

如果没有创建 DataSet 的代码,我只能猜测您在填充之前使用 DataTable 创建了 DataSet,或者您使用设计器创建了它,在这种情况下它已经有一个表。

您应该检查DbDataAdapter.Fill的返回值,而不是检查 DataSet 是否有任何表。Fill 返回数据集中实际添加或更新的行数。

您还应该考虑使用SqlDataAdapter而不是 OdbcDataAdapter,因为它更快并且支持更多 SQL Server 功能。

于 2013-11-12T16:22:57.970 回答