0

次のコードがあり、コードでデータベースにクエリを実行したいと思います。

 MySqlConnection connection = new MySqlConnection(Connection);
 MySqlCommand cmd;
 connection.Open();
  try
  {
    cmd = connection.CreateCommand();
    cmd.CommandText = ("INSERT INTO edata (username) VALUES ('" + this.NewUserName.Text +"') ;");
    MySqlDataReader myReader;
    myReader = cmd.ExecuteReader();
    loading.Show();
    MessageBox.Show("Your Account Has Been Created!!");
    connection.Close();
  }
  catch (Exception ex)
  {
    MessageBox.Show(ex.Message);
  }

クライアントの入力 (NewUserName.Text) がデータベース内のユーザー名と同じである場合、エラー メッセージが表示されます。そうでない場合、ユーザー名が重複します。これどうやってするの?

私はすでに接続を文字列として取得しています。

前もって感謝します!!!

PS 私は C# と MySql を学んでいる学生です。どんな助けやアドバイスにも感謝します!

4

3 に答える 3

1

データベースのユーザー名フィールドに一意の制約を作成できます。これにより、ユーザーが既に存在する場合に例外がスローされます。

または、テーブルから手動で選択し、挿入前に同じ名前のユーザーが存在するかどうかを確認します。

于 2013-07-07T10:02:40.240 に答える
1

適切な列(doc)に一意のインデックスを作成できます。

CREATE UNIQUE INDEX uq_username ON edata (username);
于 2013-07-07T10:03:28.520 に答える
1

メンバーシップクラスを使用していますか?

      MembershipCreateStatus createStatus;
        MembershipUser newUser = Membership.CreateUser(txtEmail.Text, "password", txtEmail.Text,"What was your first school?","idk", true, out createStatus);


            switch (createStatus)
        {
            case MembershipCreateStatus.Success:
           //do your actions here
            case MembershipCreateStatus.DuplicateUserName:
                CreateAccountResults.Text = "There already exists a user with this username.";
                break;

            case MembershipCreateStatus.DuplicateEmail:
                CreateAccountResults.Text = "There already exists a user with this email address.";
                break;
            case MembershipCreateStatus.InvalidEmail:
                CreateAccountResults.Text = "There email address you provided in invalid.";
                break;
            case MembershipCreateStatus.InvalidAnswer:
                CreateAccountResults.Text = "There security answer was invalid.";
                break;
            case MembershipCreateStatus.InvalidPassword:
                CreateAccountResults.Text = "The password you provided is invalid. It must be seven characters long and have at least one non-alphanumeric character.";

                break;
            default:
                CreateAccountResults.Text = "There was an unknown error; the user account was NOT created.";
                break;
        }

それを使用していない場合は、データベースを読み取るメソッドを作成し、上記のコードの前に呼び出すだけです。

string doesuserexist = ReadDatabase("Select Email from Patients where Email=@emailaddress").TrimEnd();
            if (checkemail != "")
            {
                CreateAccountResults.Text = "User Email Already Exists";
                return;
            }

独自の ReadDatabase メソッドを作成する必要がありますが、上記のコードからわかるように、insert sql ステートメントを select に置き換えるだけです。

于 2013-07-10T03:50:37.707 に答える