簡體   English   中英

如何檢查數據庫中是否已經存在用戶名

[英]How do I check if a user name already exists in Database

我已經看過幾次這個問題,但是找不到很好的答案。 我已經為此停留了幾個小時。

基本上,我的用戶名保存在數據庫中,當一個新用戶注冊時,我想檢查他的用戶名是否可用-如果可用,請將他添加到數據庫中。 他們通過一個名為FName的文本框進行注冊。 該表稱為“用戶”。

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);

SqlCommand cmd = new SqlCommand("SELECT FName FROM Users WHERE FName =  ????? usernames????? ", con);

con.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read()) 
{
     Console.WriteLine(reader["text"].ToString());
}

如何解決此代碼?

"SELECT FName FROM Users WHERE FName = @paramUsername"

然后將參數插入cmd中,如下所示:

cmd.Parameters.Add("paramUsername", System.Data.SqlDbType.VarChar);
cmd.Parameters["paramUsername"].Value = "Theusernameyouarelookingfor";

看一下這個:

SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);

string validationQuery = "SELECT * FROM Users WHERE FName = @name";
SqlCommand validationCommand = new SqlCommand(validationQuery, connection);
validationCommand.Parameters.Add("@name", SqlDbType.VarChar).Value = loginUserSelected;

connection.Open();

SqlDataReader validationReader = validationCommand.ExecuteReader(CommandBehavior.CloseConnection);

if (!validationReader.Read())
{
    string insertQuery = "INSERT INTO Users (FName) VALUES (@name)";
    SqlCommand insertCommand = new SqlCommand(insertQuery, connection);
    insertCommand.Parameters.Add("@name", SqlDbType.VarChar).Value = loginUserSelected;

    connection.Open();

    insertCommand.ExecuteNonQuery();

    insertCommand.Dispose();

    connection.Close();
}
else
{
    //Uh oh, username already taken
}

validationReader.Close();

validationCommand.Dispose();

注意事項:

  • 使用參數 ,避免串聯字符串,因為這是一個安全漏洞
  • 始終CloseDispose您的ADO對象

暫無
暫無

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

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