2012-07-21 62 views
0
using System.Data.OleDb; 

namespace ConnectingToMS_Access1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 
     OleDbDataAdapter da; 
     DataSet ds; 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      da = new OleDbDataAdapter("Select * from Record", "Provider=Microsoft.Ace.oledb.12.0;data source='D:\\mydb.accdb'"); 
      ds = new DataSet(); 
      da.Fill(ds); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      dataGridView1.DataSource = ds.Tables[0]; 
     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      DataRow dr = ds.Tables[0].NewRow(); 
      dr[0] = "abc"; 
      dr[1] = "def"; 
      dr[2] = "ghi"; 
      dr[3] = "jkl"; 
      ds.Tables[0].Rows.Add(dr); 
     } 

     private void button3_Click(object sender, EventArgs e) 
     { 
      OleDbCommandBuilder cb = new OleDbCommandBuilder(da); 
      da.Update(ds.Tables[0]); 

      MessageBox.Show("Saved in Database"); 


     } 
    } 
} 
+0

該錯誤指的是哪個'INSERT'語句?代碼中無處可見。 – Oded 2012-07-21 20:46:50

+1

此外 - 只需發佈代碼文件不會使這個問題。是的,你發佈了一個例外作爲標題,但你確實沒有問過問題。作爲讀者,我想 - 你的意思是問如何糾正這個異常,但也許我猜測是錯誤的。請問一個實際的問題。 – Oded 2012-07-21 20:49:55

回答

0

您需要在查詢中顯式定義命名列。

問題是,您不能根據列位置更新列。預計調用Fill方法會返回記錄和列名可能是合理的,但它可能不會。畢竟,運行該選擇查詢將只返回數據,而不是模式。

相關問題