如何在VB.net中检查表是否为空

时间:2010-06-04 20:04:15

标签: sql vb.net

  

可能重复:
  Checking for an SQL result in VB.NET

我有登录表单,它是重定向用户的级别,但在此之前,如果数据表上没有任何用户,我想重定向以创建管理表单。我有所有表单,但我没有设法重定向它们,因为我不知道如何创建语句。你能帮我解决一下这个问题。

    Dim con As SqlCeConnection
    Dim command As SqlCeCommand
    con = New SqlCeConnection("Persist Security Info=False;Data Source=.\database.sdf;Password=********;File Mode=shared read")
    con.Open()
    command = New SqlCeCommand("select * from users where Name=? and Password=?", con)

    Dim param1, param2 As SqlCeParameter

    param1 = New SqlCeParameter("Name", uname.Text)

    param2 = New SqlCeParameter("Password", pwd.Text)

    command.Parameters.Add(param1)
    command.Parameters.Add(param2)

    Dim reader As SqlCeDataReader = command.ExecuteReader

    If (reader.Read = True) Then
        role = reader.GetString(1)

    Else
        MsgBox("Invalid Login")
    End If

我有这个代码正在运行。写什么

Private Sub frmlogin_Load(ByVal sender As System.Object,ByVal e As System.EventArgs)处理MyBase.Load

End Sub

2 个答案:

答案 0 :(得分:2)

我建议尝试使用DataReader的HasRows属性来确定是否有一行或多行返回到DataReader对象。

if (reader.HasRows)
{

    reader.Read();
    role = reader.GetString(1)

}
else
{
    // invalid login
}

答案 1 :(得分:1)

我不确定我是否完全理解您的问题,但如果表格为空,则reader.Read()将评估为False。

我认为你想要的是一个检查users of Count表的SQL语句。 像

这样的东西
command = New SqlCeCommand("SELECT COUNT(Name) as NameCount FROM Users", con)

然后你会通过做

之类的事来评估计数
Dim reader as SqlCeDataReader = command.ExecuteReader() 
While(reader.Read())
   if reader("NameCount") = 0 then
       'Redirect to Admin Form

   else
       'Run all your current logic here to find the user from the DB
   end if
End While