簡體   English   中英

如何檢查值是否已經存在

[英]How to check if value already exists

我試圖花很多時間檢查值是否存在並且找不到,我需要檢查兩次:

  1. 在注冊
  2. 在登錄

這是我的代碼塊:

SqlConnection c = new SqlConnection(str);
        SqlCommand cmdUsername = new SqlCommand("SELECT 1 FROM Users WHERE UserName = @userName;", c);
        cmdUsername.Parameters.AddWithValue("userName", userName);
        cmdUsername.CommandType = System.Data.CommandType.Text;
        SqlCommand cmdEmail = new SqlCommand("SELECT 1 FROM Users WHERE Email = @email;", c);
        cmdUsername.Parameters.AddWithValue("email", email);

        c.Open();
        nameExists = (int)cmdUsername.ExecuteScalar();
        emailExists = (int)cmdEmail.ExecuteScalar();
        c.Close();

當我輸入電子郵件時,它標記了該行

emailExists = (int)cmdEmail.ExecuteScalar();

並且在登錄中一切正常。

請幫我! 謝謝你們。

假設您要防止重復的用戶名或電子郵件,則必須執行以下操作。 1.將ID列設置為INT,然后從列屬性中將其設置為Identity列。 2.將“電子郵件”或“用戶名”設置為主鍵,以防止重復發送“電子郵件”或“用戶名”。最佳做法是在許多情況下,用戶具有相同的名稱,但具有唯一的電子郵件,將“電子郵件”列作為主鍵。 FYI

希望有幫助!

並在此處檢查用戶名或電子郵件是否已經存在!

SqlCommand check_User_Name = new SqlCommand("SELECT COUNT(*) FROM [Table] WHERE ([user] = @user || [email] = @email)" , c);
check_User_Name.Parameters.AddWithValue("@user", txtBox_UserName.Text);
check_User_Name.Parameters.AddWithValue("@email", txtBox_Email.Text);
int UserExist = (int)check_User_Name.ExecuteScalar();

if(UserExist > 0)
{
   //Username exist
}
else
{
   //Username doesn't exist.
}

使用您的代碼,對其進行一些優化。

  • 只需一次撥打數據庫
  • 即使發生異常也始終關閉連接
  • 未找到或發生異常時返回false,否則返回true

如果這是登錄檢查,則還可以在密碼中添加檢查。

public bool ValidData(string username, string email, string connectionString)
{
    var c = new SqlConnection(connectionString);
    var cmdUsername = new SqlCommand("SELECT COUNT(*) FROM Users WHERE UserName = @userName AND email = @email;", c);
    cmdUsername.Parameters.AddWithValue("userName", username);
    cmdUsername.CommandType = System.Data.CommandType.Text;
    cmdUsername.Parameters.AddWithValue("email", email);

    c.Open();
    try
    {
        return (int) cmdUsername.ExecuteScalar() > 0;
    }
    catch (Exception ex)
    {
        //log exception

        return false;
    }
    finally
    {
        c.Close();
    }
}

如果您只需要用戶名或電子郵件更改:

    var cmdUsername = new SqlCommand("SELECT COUNT(*) FROM Users WHERE UserName = @userName AND email = @email;", c);

至:

    var cmdUsername = new SqlCommand("SELECT COUNT(*) FROM Users WHERE UserName = @userName OR email = @email;", c);

嘗試這個 -

string myConnection=str;//this is your connection string
string userName="";
string email="";
string parameteruserName = "";//your parameter should goes here
string parameterEmail = "";//your parameter should goes here
try
{
    SqlDataReader myReader = null;
    SqlCommand    myCommand = new SqlCommand(SELECT COUNT(*) as count FROM  Users WHERE UserName =" +parameteruserName+" or  Email ="+parameterEmail 
   )  "+  ";", 
                                             myConnection);
    myReader = myCommand.ExecuteReader();
    while(myReader.Read())
    {
      userName=  myReader["count"].ToString();

    }
myReader.close();
myConnection.Close();
}
catch (Exception e)
{
    Console.WriteLine(e.ToString());
}


if(Convert.ToInt32(userName)>0){
//your user name is exists
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM