2014-05-04 49 views
0

因此,我有一個MYSQL數據庫並正在爲它創建一個註冊頁面,即時嘗試檢查用戶名是否已經存在於我的數據庫中,這裏是我的代碼如果用戶名已存在於MYSQL數據庫中,請使用C#

   comd2 = conn.CreateCommand(); 
       comd2.CommandText = "SELECT * FROM logininfo WHERE username = @username "; 
       comd2.Parameters.AddWithValue("@username", txtusername.Text); 
       comd2.ExecuteNonQuery(); 

       result = (int)comd2.ExecuteScalar(); 

       if (result > 0) 
        MessageBox.Show("UserName already exsit"); 

連接已建立,我不斷收到錯誤「對象引用未設置爲對象的實例」我得到這個錯誤的結果=(int)comd2.ExeuteScalar()行。我在登錄表單上使用了類似於此的東西,並且它完美地工作,但出於某種原因無法在此處運行。有誰能夠幫助我?

回答

0

你可以使用的ExecuteScalar與統計SQL函數

comd2 = conn.CreateCommand(); 
comd2.CommandText = "SELECT COUNT(*) FROM logininfo WHERE username = @username "; 
comd2.Parameters.AddWithValue("@username", txtusername.Text); 
result = Convert.ToInt32(comd2.ExecuteScalar()); 
if (result > 0) 
    MessageBox.Show("UserName already exsit"); 

的ExecuteNonQuery不應該被用於SELECT查詢,而的ExecuteScalar是適當的時候你的查詢只返回一個值。在你的情況下,你可以調用SELECT *,當你只是想知道是否存在與該用戶名一起使用的情況下,該行將返回該行中的所有數據(如果該用戶存在)。所以要求用這個用戶名行數的數似乎是正確的選擇

+0

好吧,我做到了,現在有一個新的錯誤,我需要嘗試解決大聲笑 – user3487107

+0

而錯誤信息是? – Steve

+0

指定的轉換無效,它仍然卡住結果 – user3487107

相關問題