SqlDataAdapter.Update (таблица данных) не работает (не обновляет базу данных)

У меня есть приведенный ниже код, в котором я пытаюсь обновить базу данных из изменения представления сетки С#, сделанного в приложении Windows....

Код не обновляет базу данных SQL Server. Я не уверен, где именно возникает проблема. Вроде все нормально...

Или есть способ обновить таблицу базы данных, используя «оператор запроса на обновление», снова вопрос в том, как написать оператор обновления для любых изменений значений в представлении сетки данных?

Я предполагаю, что может быть проблема с привязкой и операторами команды select...

Может ли кто-нибудь указать мне в правильном направлении, чтобы решить эту проблему?

public partial class KnowledgeBaseForm : Form
{
    private SqlDataAdapter SDA = new SqlDataAdapter();
    private DataTable DT = new DataTable();

    private void button_retrievekb_Click(object sender, EventArgs e)
    {
        try
        {
            con.Open();
            SqlDataAdapter SDA = new SqlDataAdapter(@"SELECT * From Table1", con);

            SDA.Fill(DT);

            bindingsource.DataSource = DT;
            dataGridView.DataSource = bindingsource;

            if (DT.Rows.Count > 0)
            {
                dataGridView.Columns[0].DefaultCellStyle.ForeColor = Color.Gray;
                dataGridView.Columns[0].ReadOnly = true;
            }
            else
            {
                MessageBox.Show("No Knowledge Base Rules Found");
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error : " + ex.Message);
        }
        finally
        {
            con.Close();
        }
    }   

    private void button_update_Click(object sender, EventArgs e)
    {
        if (MessageBox.Show("Do you really want to Update these values?", "Confirm Update", MessageBoxButtons.YesNo) == DialogResult.Yes)
        {
            //binding the datasource with the changes made in the gridview
            bindingsource.DataSource = dataGridView.DataSource;
            DT.AcceptChanges();
            scb = new SqlCommandBuilder(SDA);                 
            SDA.Update((DataTable) bindingsource.DataSource);
            MessageBox.Show("Updates successfully submitted to CoSD");
        }
    }
}

person Gowtham Ramamoorthy    schedule 05.04.2016    source источник
comment
объявите свой объект DT в корне класса, как ваш DataAdapter, и используйте DT.AcceptChanges перед вызовом SDA.Update, протестируйте его и дайте нам сейчас, если он работает   -  person Saeed Taran    schedule 05.04.2016
comment
Привет... Я отредактировал код, как ты сказал... но все равно не работает...   -  person Gowtham Ramamoorthy    schedule 05.04.2016


Ответы (1)


Попробуй это:

public partial class KnowledgeBaseForm : Form
    {
     SqlDataAdapter SDA = new SqlDataAdapter();
     DataTable DT = new DataTable();
     DataSet ds = new DataSet();
    private void button_retrievekb_Click(object sender, EventArgs e)
            {

               SDA = new SqlDataAdapter(@"SELECT * From Table1", con);
               ds = new DataSet();
               SDA.fill(ds,"SomeName");
               dataGridView1.DataSource = ds.Tables[0];
            }

    private void button_update_Click(object sender, EventArgs e)
          {


            if (MessageBox.Show("Do you really want to Update these values?", "Confirm Update", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
               SqlCommandBuilder builder = new SqlCommandBuilder(SDA);
               SDA.Update(ds,"SomeNme");

            }
          }
    }
person JC Borlagdan    schedule 06.04.2016