我怎么知道VB中的SQL查询是返回了什么内容还是什么都没有?

时间:2014-10-29 14:21:52

标签: sql sql-server visual-studio-2005

我正在使用Visual Studio 2005(带有InfoPath表单),并且在继续之前需要知道SQL Server 2008上的表中是否有记录。

到目前为止,我已经提出以下建议:

Dim one_SearchSQL As String = "SELECT * FROM Employee_Info WHERE empNumber = '" & EmployeeNumber & "'"
dataUpdatesConnection.Execute(one_SearchSQL)

...如果上面的内容返回了我可以让用户更新数据,但是如果它返回NULL我需要检查他们是否要先添加新行。

那么,我怎样才能找出上面代码在Visual Studio中返回的内容?

我发现的所有信息都是将VB / InfoPath收集的变量传递给SQL语句(这对其他部分有帮助)。我还没有找到任何解释如何以其他方式做到的事情。

谢谢,M

1 个答案:

答案 0 :(得分:0)

如果存在任何记录,则返回True的函数;如果没有记录或遇到异常,则返回False。它还通过使用empNumber参数来防止注入攻击。另请注意使用SELECT Count(*)和ExecuteScalar方法:

Function DataExists(EmployeeNumber As String) As Boolean
    Dim sqlConn As New SqlConnection
    Try
        Using sqlConn
            sqlConn.ConnectionString = "your connection string"
            sqlConn.Open()
            Using sqlCmd As New SqlCommand
                sqlCmd.CommandText = "SELECT Count(*) FROM Employee_Info WHERE empNumber = @EmpNbr"
                'I am arbitrarily using 50 for the length of empNumber and assuming it is a VarChar
                sqlCmd.Parameters.Add("@EmpNbr", SqlDbType.VarChar, 50).Value = EmployeeNumber
                Return sqlCmd.ExecuteScalar() > 0
            End Using
        End Using

    Catch ex As Exception
        MessageBox.Show(ex.Message)
        Return False
    Finally
        sqlConn.Close()
    End Try

End Function