行を削除しようとして問題が発生しました。
すべての行が選択され、ListBox
コントロールに表示されます。
次に、btnObrisi_Click
イベント(Obrisi = delete)を呼び出すと、から選択したアイテムListBox
が削除されます。
アイテムは実際にはコントロールから削除されますが、値はデータベースから削除されません。
これは私が使用しているコードです:
private string conString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True";
private SqlConnection con;
private SqlCommand com;
private DataTable dt;
private SqlDataAdapter da;
private DataTable SelectAll()
{
con = new SqlConnection(conString);
com = new SqlCommand();
dt = new DataTable();
da = new SqlDataAdapter();
com.Connection = con;
com.CommandType = CommandType.Text;
com.CommandText = "SELECT * FROM predmeti";
da.SelectCommand = com;
da.Fill(dt);
return dt;
}
private void Obrisi(int id)
{
con = new SqlConnection(conString);
com = new SqlCommand();
com.Connection = con;
com.CommandType = CommandType.Text;
com.CommandText = "DELETE FROM predmeti WHERE predmetID = @predmetID";
com.Parameters.AddWithValue("@predmetID", id);
try
{
con.Open();
com.ExecuteNonQuery();
MessageBox.Show("Obrisano");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
con.Close();
}
}
private void Citaj()
{
listBox1.ValueMember = "predmetID";
listBox1.DisplayMember = "ime_predmeta";
listBox1.DataSource = SelectAll();
}
private void btnOsvezi_Click(object sender, EventArgs e)
{
Citaj();
}
private void Form1_Load(object sender, EventArgs e)
{
Citaj();
}
private void btnObrisi_Click(object sender, EventArgs e)
{
int id = Convert.ToInt32(listBox1.SelectedValue);
Obrisi(id);
Citaj();
}