Я создал хранимую процедуру в SQL Server, чтобы проверить, существует ли имя пользователя в базе данных:
CREATE PROCEDURE [dbo].[spCheckUsernameForAnswer]
@username VARCHAR(30)
AS
BEGIN
DECLARE @count INT
SELECT @count = COUNT(username)
FROM Users
WHERE [username] = @username
IF (@count = 1)
BEGIN
SELECT 1 AS ReturnCode
END
ELSE
BEGIN
SELECT 0 AS Returncode
END
END
Вот что я сделал в Visual Studio Registration.aspx.cs
.
Мне нужно проверить, существует ли имя пользователя, и если нет, вставить необходимые значения в БД, чтобы зарегистрировать нового пользователя.
Из приведенного ниже кода он продолжает регистрировать новых пользователей с одним и тем же именем пользователя снова и снова.
Есть идеи, что мне здесь не хватает?
protected void Button1_Click(object sender, EventArgs e)
{
try
{
Guid newGUID = Guid.NewGuid();
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString);
SqlCommand cmd = new SqlCommand("spCheckUsernameForAnswer", conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter parausername = new SqlParameter("@username", TextBoxUN.Text);
cmd.Parameters.Add(parausername);
conn.Open();
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
if (Convert.ToBoolean(rdr["ReturnCode"]))
{
Label1.Text = "Username found";
}
else
{
Label1.Text = "not found";
}
}
conn.Close();
SqlConnection conn1 = new SqlConnection(ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString);
conn1.Open();
string insertQuery = "insert into [Users] (user_id, first_name, last_name, email, username, password) values (@user_id, @first_name, @last_name, @email, @username, @password)";
SqlCommand com = new SqlCommand(insertQuery, conn1);
com.Parameters.AddWithValue("@user_id", newGUID.ToString());
com.Parameters.AddWithValue("@first_name", TextBoxFname.Text);
com.Parameters.AddWithValue("@last_name", TextBoxLname.Text);
com.Parameters.AddWithValue("@email", TextBoxEmail.Text);
com.Parameters.AddWithValue("@username", TextBoxUN.Text);
com.Parameters.AddWithValue("@password", TextBoxPass.Text);
com.ExecuteNonQuery();
Response.Write("Registration successful");
conn1.Close();
}
}
catch (Exception ex)
{
Response.Write("Error:" + ex.ToString());
}