2017-01-25 28 views
1

/更新本地數據的基礎上,我有一個problam到從DataGridView到本地數據庫中插入數據,在我的計劃 - 從CSV/IM上傳excel文件數據到datagridview的,並顯示給用戶。寫從DataGridView

我在我的程序中有3個localDB通過外鍵和主鍵相互連接,我想從datagridview插入一些列到我的localDB,如果這個數據已經存在於我的localDB中,不要插入它。

所以我的問題是:

1.how我可以插入正確的數據從DataGridView到我的LocalDB。

2.如果它已經存在,我不想把它插入,怎麼樣?

這是我要上傳的文件在DataGridView顯示代碼:

private void upload_to_datagridview(object sender, EventArgs e) 
    { 
     try 
     { 
      string Pathconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=\"Excel 8.0;HDR=Yes;\";"; 
      OleDbConnection conn = new OleDbConnection(Pathconn); 
      OleDbDataAdapter myDataAdaptor = new OleDbDataAdapter("Select * from [" + SheetName + "$]", conn); 
      System.Data.DataTable dt = new System.Data.DataTable(); 
      myDataAdaptor.Fill(dt); 
      dataGridView1.DataSource = dt; 
     } 

     catch(Exception) 
     { 
      MessageBox.Show("no workbook was uploaded please upload again!"); 
      wb.Close(false); 
      excel.Quit(); 
     } 

     wb.Close(false); 
     excel.Quit(); 
    } 

我已經看到了更新從DataGridView數據的LocalDB一些代碼,但它是整個的DataGridView,所有的列,我想從datagridview中獲取特定的列,並從dataDB中更新特定的列。

請如果有人能解釋我如何做正確東陽我無法找到任何東西。

謝謝!

+1

還有就是如何用你的方法插入https://msdn.microsoft.com/pl-pl/library/system.data.oledb.oledbdataadapter.insertcommand(v= vs.110).aspx –

+0

Ad.2我假設你的dataTable中沒有ID,所以如果你不想插入現有的行到Db中,你需要在插入前檢查它,當然你必須告訴哪些列可以重複,而不是。 另一種方法是設置一些表列的唯一鍵和嘗試{}趕上{} :) –

+0

調用insert我會檢查now.thanks – shlezz

回答

1

我會爲你的情況提供了另一種解決方案,它可以幫助改變主意想在指出錯誤的方式。解決方案是加載並保存XML而不是csv/Excel。您只能將數據加載到Datagrid中,然後將其保存爲XML。然後你現在有了你的XML數據,你可以加載和處理到Datagrid容器中,然後保存到你的本地機器中。

讓我知道如果你喜歡的方式,所以我提供一些代碼

 
Please follow the steps : 
1) You need load csv/excel one time only and make sure to check update check box for datagridview , then you save it in XML 
2) Save it in XML format , use Write XML Code 
3) Load it again by using Read XML Code 
4) Update any data in any field then save it by using (Write XML Code)

//讀取XML

DataSet ds1 = new DataSet(); 
ds1.ReadXml("d:/mahdi.xml"); 
dataGridView1.DataSource = ds1; 
dataGridView1.DataMember = "tlbName"; 

//寫XML

DataSet ds2 = new DataSet(); 
    dataGridView1.DataSource = ds2; 
    XmlTextWriter newXml = new XmlTextWriter("d:/mahdi.xml", Encoding.UTF8); 
    ds2.WriteXml(newXml); 

//顯示XML在文本框

DataSet ds3 = new DataSet(); 
    StringWriter swXML = new System.IO.StringWriter(); 
    ds3.WriteXmlSchema(swXML); 
    textBox1.Text = swXML.ToString(); 

讓我知道,如果它不工作

+0

是非常感謝,如果可以的話它會幫助我 – shlezz