【问题标题】:write/update local data base from datagridview [closed]从datagridview写入/更新本地数据库[关闭]
【发布时间】:2017-01-25 09:40:58
【问题描述】:

我在我的程序中将数据从 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 更新特定列。

请如果有人解释我如何正确地做到这一点,因为我找不到任何东西。

谢谢!

【问题讨论】:

  • 有如何使用你的方法插入msdn.microsoft.com/pl-pl/library/…
  • Ad.2 我假设您的 dataTable 中没有 ID,因此如果您不想将现有行插入 Db,则需要在插入之前检查它,当然您必须告诉哪个列可以重复,哪些不可以。另一种方法是在某些表列上设置唯一键并在 Try{}catch{} 中调用 insert :)
  • 我现在去看看。谢谢

标签: c# sql database winforms local-database


【解决方案1】:

我将为您的案例提供替代解决方案,它可能会帮助您改变想法,以不同的方式思考。解决方案是 Load and Save an XML 而不是 csv/Excel 。您只能将数据加载到 Datagrid 中一次,然后将其保存为 XML 。然后你现在有了你的 XML 数据,你可以加载和操作到 Datagrid 容器中,然后最后将它保存到你的本地机器中。

如果你喜欢这种方法,请告诉我,我提供一些代码

请按照以下步骤操作: 1)您只需要加载一次 csv/excel 并确保选中 datagridview 的更新复选框,然后将其保存为 XML 2) 以 XML 格式保存,使用 Write XML Code 3) 使用 Read XML Code 再次加载 4) 更新任何字段中的任何数据,然后使用 (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();

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

【讨论】:

  • 是的,非常感谢,如果可以的话,它会帮助我
猜你喜欢
  • 2020-04-26
  • 2014-01-12
  • 2013-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-03
  • 2015-05-20
相关资源
最近更新 更多