写从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中更新特定的列。
请如果有人能解释我如何做正确东阳我无法找到任何东西。
谢谢!
我会为你的情况提供了另一种解决方案,它可以帮助改变主意想在指出错误的方式。解决方案是加载并保存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();
让我知道,如果它不工作
是非常感谢,如果可以的话它会帮助我 – shlezz
还有就是如何用你的方法插入https://msdn.microsoft.com/pl-pl/library/system.data.oledb.oledbdataadapter.insertcommand(v= vs.110).aspx –
Ad.2我假设你的dataTable中没有ID,所以如果你不想插入现有的行到Db中,你需要在插入前检查它,当然你必须告诉哪些列可以重复,而不是。 另一种方法是设置一些表列的唯一键和尝试{}赶上{} :) –
调用insert我会检查now.thanks – shlezz