2010-06-04 24 views
1

可能重複:
Checking for an SQL result in VB.NET如何檢查表是在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 

我有此代碼正在工作。怎麼寫

私人小組frmlogin_Load(BYVAL發件人爲System.Object的,BYVALË作爲System.EventArgs)把手MyBase.Load

End Sub 
+0

這是http://stackoverflow.com/questions/1831920/checking-for-an-sql-result-in-vb-net的副本 – 2010-06-23 21:48:20

回答

2

我會建議您嘗試DataReader的的HasRows屬性,以確定是否有一個或多個行返回到DataReader對象評估計數。

if (reader.HasRows) 
{ 

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

} 
else 
{ 
    // invalid login 
} 
+0

非常感謝您的幫助。 – Hakan 2010-06-05 07:50:47

1

不知道我完全理解你的問題,但如果表空然後reader.Read()將評估爲False。

我想你想要的是一個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 
+0

好的,但如何聲明Namecount?對不起,我英文很差。 – Hakan 2010-06-04 20:39:35

+0

對不起 - NameCount應該引用引號,因爲它引用了數據庫中的列名。我現在將我的帖子更改爲讀者(「NameCount」)。 – Overhed 2010-06-07 18:11:36