我正在使用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
答案 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