数据集为空,但表和行表示1

时间:2013-11-12 16:14:58

标签: sql-server vb.net dataset visual-studio-2005

我正在从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,无论我从中提取的内容是什么。

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

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

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

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