c# WINFORM 导入EXCEL数据覆盖问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# WINFORM 导入EXCEL数据覆盖问题相关的知识,希望对你有一定的参考价值。
c# WINFORM当导入EXCEL数据到SQL2005的时候,如果数据库中存在该数据,则更新该条数据,如果不存在则插入到数据库。这样是不是要每次都要查询一次数据库,该条数据是否存在?假如我有1W条数据,那是一个痛苦的过程啊!有什么比较好的解决办法?
我自己解决了··其实直接用SQLSERVER触发器就可以实现了··
在加载页面的时候:
插入代码:(举个例子---数据库为Library)
string strcn = @"Data source=HY\SQLEXPRESS;Initial Catalog=Library;Integrated Security=True";
SqlConnection cn = new SqlConnection(strcn);
string str = "select * from BookTable";
SqlDataAdapter adapter = new SqlDataAdapter(str, cn);
DataSet ds = new DataSet();
adapter.Fill(ds);
this.dataGridView1.DataSource = ds.Tables[0];
更新代码:
string strcn = @"Data source=HY\SQLEXPRESS;Initial Catalog=Library;Integrated Security=True";
SqlConnection cn = new SqlConnection(strcn);
string str = "select count(*) from BookTable where BookID='"+tb_Book_ID.Text+"'";
SqlCommand cmd = new SqlCommand(str,cn);
try
cn.Open();
int cnt = (int)cmd.ExecuteScalar();
if(cnt==1)
string str1 = "update BookTable set BookName='"+tb_Book_Name.Text+"',BookType='"+comboBox_BookType.Text+"',BookAuthor='"+tb_Book_Author.Text+"',BookPubHouse='"+tb_Book_PubHouse.Text+"',BookPubTime='"+dateTimePicker_出版日期.Value.ToString()+"',BookStatus='"+tb_Book_Status.Text+"' where BookID='"+tb_Book_ID.Text+"'";
cmd = new SqlCommand(str1,cn);
cmd.ExecuteNonQuery();
FrmModify_Load(null,null);
finally
cn.Close();
其实说到底就是通过快速链接数据库,进行修改,更新等操作。
谢谢 参考技术B 可以这样操作:
1、将excel的数据整体读入内存。
2、将sql中的关键列读入内存。
3、在内存中进行比对后判断是否插入。
感觉你这个小同志确实是想的比较多,这是好事。鼓励一个。本回答被提问者采纳 参考技术C 有没有key做区间判断?如能判断先将此区间内数据先全部删除掉,再做INSERT
不行就只能查一遍,再做insert或update了 参考技术D 没有好的思路
可以先把 EXCEL 中的数据分为 在数据库中有 和在数据库中 没有
两部分【sql实现】
然后 ..... 第5个回答 2012-04-12 没有好的办法,只能这样判断
以上是关于c# WINFORM 导入EXCEL数据覆盖问题的主要内容,如果未能解决你的问题,请参考以下文章
C# 自己写的Winform程序批量导入Excel文件到Oracle数据库的过程中,程序运行会很慢!而且Winform窗体会卡
C# winform程序 excel导入Sqlite数据库(批量新增),求大神看看我的代码
C# winform中如何通过新建EXCEL工作簿把SQL SERVER数据库中多张表导入EXCEL不同的sheet当中啊