ねえ、私はこの人に助けが必要です。私がここでやろうとしているのは、自分のwinformのデータエントリに基づいてメンバの名前を使ってメンバがすでに存在する場合、mysql dbをチェックすることです。重複エントリの検証は、メッセージボックスを完全に私が望む方法で表示しますが、既存のメンバーが見つからない場合に作成された挿入クエリを実行しません。C#重複したエントリをチェックし、重複がなければinsertクエリを実行します。
これを正しく実行していますか?または私が望むようにそれを稼働させる別の方法があります。あなたが準備されたステートメントを使用する方法を知っているように見える
private void metroButton1_Click(object sender, EventArgs e) {
using (con = new MySqlConnection(constring)) {
string selectquery = "SELECT * FROM sbis.sb_members WHERE lname ='" + this.lnametxtbox.Text + "' AND fname = '" + this.fnametxtbox.Text + "' AND mname ='" + this.mnametxtbox.Text + "' ";
MySqlCommand command2 = new MySqlCommand(selectquery, con);
string insertquery = "INSERT INTO sbis.sb_members (lname, fname, mname, position, appointment, address, contactnum, birthdate, civilstatus, educattainment, eligibility, terms_idterms, polparties_id, sex) VALUES (@lname, @fname, @mname, @position, @appointment, @address, @contactnum, @birthdate, @civilstatus, @educattainment, @eligibility, @terms_idterms, @polparties_id, @sex)";
MySqlCommand cmd = new MySqlCommand(insertquery, con);
string lname, fname, mname, address, contactnum, educattainment;
lname = lnametxtbox.Text;
fname = fnametxtbox.Text;
mname = mnametxtbox.Text;
address = addresstxtbox.Text;
contactnum = contacttxtbox.Text;
educattainment = eductxtbox.Text;
var birthdate = birthdatedtp.Value.Date;
cmd.Parameters.AddWithValue("@lname", lname);
cmd.Parameters.AddWithValue("@fname", fname);
cmd.Parameters.AddWithValue("@mname", mname);
cmd.Parameters.AddWithValue("@address", address);
cmd.Parameters.AddWithValue("@contactnum", contactnum);
cmd.Parameters.AddWithValue("@position", position);
cmd.Parameters.AddWithValue("@appointment", appointment);
cmd.Parameters.AddWithValue("@birthdate", birthdate);
cmd.Parameters.AddWithValue("@sex", sex);
cmd.Parameters.AddWithValue("@eligibility", eligibility);
cmd.Parameters.AddWithValue("@civilstatus", civilstatus);
cmd.Parameters.AddWithValue("@terms_idterms", terms);
cmd.Parameters.AddWithValue("@polparties_id", polparties);
cmd.Parameters.AddWithValue("@educattainment", educattainment);
try {
con.Open();
MySqlDataReader cr = command2.ExecuteReader();
while (cr.Read()) {
if (cr.HasRows == true) {
MessageBox.Show("Member already exists.", "Duplicate Entry", MessageBoxButtons.OK, MessageBoxIcon.Warning);
} else if (cr.HasRows == false) {
if (cmd.ExecuteNonQuery() > 0) {
MessageBox.Show("Saved", "Save", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
cr.Close();
} catch (Exception ex) {
MessageBox.Show(ex.Message);
}
}
}
返信いただきありがとうございます。私はINSERT IGNOREを試しましたが、私は保存するたびに重複したエントリを取得します。 – nolimits
本当にありがとうございました。 – nolimits
あなたのプロジェクトで全力を尽くしてくれたことをうれしく思います。 – e4c5