从datagridview写入/更新本地数据库

时间:2017-01-25 09:40:58

标签: c# sql database winforms local-database

我有一个problam将数据从datagridview插入本地数据库,在我的程序中 - 我从csv / excel文件数据上传到datagridview并显示给用户。

我的程序中有3个localDB通过外键和主键相互连接,我想从datagridview中插入一些列到我的localDB,如果该数据已经存在于我的localDB中,请不要插入它。

所以我的问题是:

1.如何将数据从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 个答案:

答案 0 :(得分: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);

//在TextBox中显示XML

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

如果它不起作用,请告诉我