如何解決的IF語句,以便當用戶試圖註冊使用已經存在的用戶名。目前,如果用戶名已存在,我的程序將不接受輸入的數據,但它仍會繼續到下一頁(即使數據未保存在數據庫中)。我需要知道的是如何消除的問題,以便當用戶輸入存在,它就會放棄該消息框中的錯誤,而不是移動到下一個頁面中的「用戶名」。我如何修復SignUp頁面中的if語句?
謝謝!
private void btnSignupNew_Click(object sender, EventArgs e)
{
if (txtUsername.Text == "")
{
errorUsername.SetError(txtUsername, "Enter A Username");
}
else if (txtPassword.Text == "")
{
errorPassword.SetError(txtPassword, "Enter A Valid Password");
}
else
{
using (SqlConnection con = new SqlConnection("Data Source=etc"))
{
con.Open();
bool exists = false;
// create a command to check if the username exists
using (SqlCommand cmd = new SqlCommand("select count(*) from [User] where UserName = @UserName", con))
{
cmd.Parameters.AddWithValue("UserName", txtUsername.Text);
exists = (int)cmd.ExecuteScalar() > 0;
}
// if exists, show a message error
if (exists)
{
MessageBox.Show("Username: " + txtUsername.Text + " already Exists");
//errorPassword.SetError(txtUsername, "This username has been using by another user.");
}
else
{
// does not exists, so, persist the user
using (SqlCommand cmd = new SqlCommand("INSERT INTO [User] values (@Forename, @Surname, @Username, @Password)", con))
{
cmd.Parameters.AddWithValue("Forename", txtForename.Text);
cmd.Parameters.AddWithValue("Surname", txtSurname.Text);
cmd.Parameters.AddWithValue("UserName", txtUsername.Text);
cmd.Parameters.AddWithValue("Password", txtPassword.Text);
cmd.ExecuteNonQuery();
}
}
con.Close();
MessageBox.Show("Sucessfully Signed Up");
Form1 signin = new Form1();
signin.Show();
this.Close();
}
}
}
}
您的參數名稱是錯誤的。 'cmd.Parameters.AddWithValue( 「用戶名」,txtUsername.Text);'應'cmd.Parameters.AddWithValue( 「用戶名@」,txtUsername.Text);'。這對所有人都是如此。我看到 – Brian 2013-02-28 18:23:20
第一個問題是在這條線在這裏'cmd.Parameters.AddWithValue( 「用戶名」,txtUsername.Text);'應該是這樣的'cmd.Parameters.AddWithValue( 「@用戶名」,txtUsername.Text);'Insert語句需要在每個PARAM名前面還有 – MethodMan 2013-02-28 18:24:04