SqlDataAdapter.Update (таблица данных) не работает (не обновляет базу данных)
У меня есть код ниже, где я пытаюсь обновить базу данных с помощью изменения вида сетки C#, сделанного в приложении Windows....
Код не обновляет базу данных SQL Server. Я не уверен, где именно проблема возникает. Все вроде бы хорошо...
Или есть способ обновить таблицу базы данных, используя снова "оператор запроса на обновление", вопрос в том, как написать оператор обновления для любых изменений значений в представлении таблицы данных?
Я предполагаю, что может быть проблема с привязкой и операторами выбора команды...
Может ли кто-нибудь указать мне правильное направление для решения этой проблемы?
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");
}
}
}
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");
}
}
}