写从DataGridView

问题描述:

/更新本地数据的基础上,我有一个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

我会为你的情况提供了另一种解决方案,它可以帮助改变主意想在指出错误的方式。解决方案是加载并保存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