我已經看遍了所有的地方,但我似乎無法得到這個工作。使用更新(dataTable)幫助更新訪問數據庫
我想從DataGridView更新Access數據庫。數據庫加載到網格工作正常。我使用this site中描述的說明。
但是,要根據對DataGridView所做更改更新數據庫,我使用命令dataAdapter.Update(datatable);
,但取決於位置(此代碼旁邊),代碼將運行但數據庫不會更新。如果我把它放在一個按鈕中,它會拋出一個異常「插入到語句中的語法錯誤」。
其他問題:我應該在加載DataGridView後關閉連接變量嗎?如果是這樣,我應該重新打開它來執行更新,然後重新關閉它?這是如何運作的?。
任何幫助將不勝感激。 編輯:像蒂姆問全班上課。
public partial class Pantalla_Proyecto : Form
{
private Inicio Inicio;
private List<string> Logueado;
private OleDbConnection conn;
private OleDbDataAdapter Adaptador;
private DataTable Tabla;
private BindingSource Bsource;
private OleDbCommandBuilder Builder;
public Pantalla_Proyecto(Inicio Inicio, List<string> Logueado)
{
this.Inicio =Inicio;
this.Logueado = Logueado;
InitializeComponent();
}
private void Pantalla_Proyecto_Load(object sender, EventArgs e)
{
}
private void importarCDPToolStripMenuItem_Click(object sender, EventArgs e)
{
Importar_CDP Importar_CDP = new Importar_CDP();
Importar_CDP.Show();
}
private void importarListasToolStripMenuItem_Click(object sender, EventArgs e)
{
WindowsFormsApplication1.Formularios.Lista_Lazos.Importar_Listas1 Importar_Listas = new WindowsFormsApplication1.Formularios.Lista_Lazos.Importar_Listas1();
Importar_Listas.Show();
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
}
private void flowLayoutPanel2_Paint(object sender, PaintEventArgs e)
{
}
private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string sql = "Select * From ["+TABLE (THIS IS A STRING I GET FROM PREVIOUS FORM)+"]";
conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=proyectos\" + Location(this is a string i get on the previous form) + ".mdb;User Id=admin;Password=;");
conn.Open();
// Extraemos info de mi database y la meto en un datatable
Adaptador = new OleDbDataAdapter(sql, conn);
Builder = new OleDbCommandBuilder(Adaptador);
Tabla = new DataTable();
Adaptador.Fill(Tabla);
// LLENO EL DATA GRID VIEW
Bsource = new BindingSource();
Bsource.DataSource = Tabla;
dataGridView1.DataSource = Bsource;
dataGridView1.Dock = DockStyle.Fill;
Adaptador.Update(Tabla);//if i put it here nothing happens
conn.Close();
}
private void dataGridView1_Validating(object sender, CancelEventArgs e)
{
}
private void button1_Click_1(object sender, EventArgs e)
{
conn.Open();
Adaptador.Update(Tabla);//IF i put it here i get an exception
conn.Close();
}
你能展示更多的代碼嗎?特別是發生錯誤的地方。至於關閉連接,是的,每當你完成時你應該關閉它。最好將連接包裝在一個使用語句中,該語句將自動處理關閉它。 – Tim
你能詳細說明一下使用語句嗎?,我對編程相當陌生 – Joaquin
我添加了一個涵蓋using語句和其他一些事情的答案。 – Tim