2
私は追加するセクションと削除するセクションが2つあるフォームを持っています。 しかし、問題は私がデータを追加した後、私がちょうど追加したもの以外のすべての以前のデータを見ることができるセクションを削除するに関連付けられているコンボボックスをチェックするときです。だから私は最新のデータが表示されませんが、私は追加ボタンをクリックするとすぐにコンボボックスにすべてを取得し、最新のものにいくつかの種類のソリューションが必要です。C#Oledbアプリケーションのデータ更新
追加ボタンのためのコード:
private void btnAddSubj_Click(object sender, EventArgs e)
{
OleDbDataReader cmd = ad.select("SELECT TOP 1 ID FROM subjects WHERE ID = " + int.Parse(txtSubjID.Text));
if (cmd.Read())
{
MessageBox.Show("Subject ID you entered is taken, please select a different one");
}
else
{
ad.insert("insert into subjects (`ID`,`subjectName`) values(" + int.Parse(txtSubjID.Text) + ",'" + txtSubjName.Text + "')");
}
populateComboBoxSubjName();
}
ここで広告が、私が作成したクラスに関連付けられていると挿入のためのすべてのメソッドが含まれ、選択、削除、更新されます。 populateComboBoxSubjNameため
コード:
private void populateComboBoxSubjName()
{
comboBoxSubjName.Items.Clear();
OleDbDataReader cmd = ad.select("SELECT * FROM subjects");
while (cmd.Read())
{
for (int f = 0; f < cmd.FieldCount; f+=2)
{
string data = (cmd.GetValue(f).ToString() + "-" + cmd.GetValue(f + 1).ToString());
comboBoxSubjName.Items.Add(data);
}
}
}
ボタン削除コード:
private void btnDeleteSubj_Click(object sender, EventArgs e)
{
string selected = this.comboBoxSubjName.GetItemText(this.comboBoxSubjName.SelectedItem);
string[] idToDelete = selected.Split('-');
ad.delete("DELETE FROM subjects WHERE ID=" + int.Parse(idToDelete[0]));
}
あなたは 'bt、DeleteSbj_Click()'も表示できますか? – Wndrr
@Wndrrがコードを追加しました –
SQLインジェクションとフォーマットの問題を避けるためにパラメータを使用してください。読み込み中のforループは必要ないと思われます。将来はフィールドの位置が変更される可能性があるため、インデックスの代わりにフィールド名を使用する必要があります。 – LarsTech