DataSet - Kasowanie i Aktualizacja w listBoxie

0

Witam kolegów i koleżanki na forum!
Mam pewien problem z pisanym przeze mnie programem.
Chcę poprzez dataSet dodawać, usuwać i aktualizować dane w bazie danych.
Dodawanie mi działa, gorzej z kasowaniem i aktualizacją, nie mam pojęcia co robię źle...

//DODAWANIE
        private void button2_grupy_Click(object sender, EventArgs e)
        {
            DataTable dt = ds.Tables["Grupy"];
            SqlCommandBuilder sb = new SqlCommandBuilder(da);
            DataRow drow = dt.NewRow();
            drow["grupa"] = textBox1_grupy.Text;
            dt.Rows.Add(drow);

            int updates = da.Update(ds, "Grupy");
            MessageBox.Show("Dodano grupę: " + textBox1_grupy.Text);
            textBox1_grupy.Clear();
        }

//KASOWANIE
        private void button4_grupy_Click(object sender, EventArgs e)
        {
            DataTable dt = ds.Tables["Grupy"];
            SqlCommandBuilder sb = new SqlCommandBuilder(da);
            
            int selected = listBox1_grupy.SelectedIndex;
            
            dt.Rows[selected].Delete();
            

            int updates = da.Update(ds, "Grupy");
            MessageBox.Show("Skasowano grupę: " + textBox3_grupy.Text);
        }

//EDYCJA
        private void button3_grupy_Click(object sender, EventArgs e)
        {
            DataTable dt = ds.Tables["Grupy"];
            SqlCommandBuilder sb = new SqlCommandBuilder(da);

            dt.Rows[textBox2_grupy.Text]["grupa"] = textBox2_grupy.Text;
            int updates = da.Update(ds, "Grupy");
            MessageBox.Show("Zmieniono grupę: " + textBox2_grupy.Text);

        }

Powiązałem listBoxa z textBoxami. Chciałbym, żeby kasował się ten wiersz, który jest zaznaczony, albo który się wyświetla w textBoxie, a edycja wiersza ten który jest w textBoxie

0

Witam,

Napisałbyś co dokładnie nie działa, jaki błąd wyskakuje. Dodatkowo widzę, że masz w kodzie SqlDataAdapter. Napisz jak zdefiniowałeś zapytania deleteCommand i updateCommand dla tego adaptera.

0

mam podobny problem :(

Udało Ci się już go rozwiązać?

0

Zrobiłem tak: pobieranie danych zrobiłem bezpołączeniowo, a kasowanie i edycje połączeniowo.

private void button1_PobranieDanych_Click(object sender, EventArgs e)
        {
            connString = new SqlConnectionStringBuilder();
            connString.DataSource = "nazwa_serwera";
            connString.InitialCatalog = "nazwa_bazy";
            connString.IntegratedSecurity = true;

            string selectCommand = "SELECT * FROM tabela";

            da = new SqlDataAdapter(selectCommand, connString.ConnectionString);
            ds = new DataSet();
            int rowsCounter = da.Fill(ds, "Tabela");
             listBox1.DataSource = ds;
            listBox1.DisplayMember = "Tabela.kolumna";
}

Żeby skasować, zaznaczam wybraną pozycję w listboxiei klikam w button:

  private void button1_Kasowanie_Click(object sender, EventArgs e)
        {         
            SqlConnection conn;
            SqlConnectionStringBuilder connString;
            connString = new SqlConnectionStringBuilder();

            connString.InitialCatalog = "nazwa_serwera";
            connString.DataSource = "nazwa_bazy;
            connString.IntegratedSecurity = true;

            conn = new SqlConnection(connString.ConnectionString);

            conn.Open();
            SqlCommand query = new SqlCommand();
            string delQuery = "DELETE FROM Tabela WHERE id_pozycji ='" + listBox1.Text + "'";
            query.CommandText = delQuery;
            query.Connection = conn;

            int recordCount = query.ExecuteNonQuery();

            conn.Close(); 
}
0

W tym pierwszym przypadku zeby dzialalo to trzeba przed

int updates = da.Update(ds, "Grupy");

dodać

da.DeleteCommand = sb.GetDeleteCommand();

i odpowiednio

da.UpdateCommand = sb.GetUpdateCommand();

1 użytkowników online, w tym zalogowanych: 0, gości: 1