日期:2014-05-17  浏览次数:20518 次

C#发何批量插入数据到数据表的问题?
1.我有2张SQL数据表:库存表 入库表 
列名为 名称  数量 单位

2.现有一张有5条数据的单据需要入库如:
 名称  数量 单位
《易经》 2   本
《书经》 3   本
《诗经》 5   本
《周礼》 6   本

3.我一条一条的把数据录入到SQL入库表,然后根据相同单号查询并返回到页面用GRIDVIEW再显示便于删改.

2.现在GRIDVIEW中的数据确定后,需要把GRIDVIEW中的5条数据一起插入到库存表中,条件是:如果库存表中有相同名称的,就直接更新数量;如果库存表中没有相同名称的,就直接插入新记录.这样的效果应该怎么去实现,是用Foreach语句去循环GRIVIEW来达到我要的效果吗?如果用Foreach语句,我应该怎么去写这段代码? 

------解决方案--------------------
如果库存表中有相同名称的,就直接更新数量;如果库存表中没有相同名称的,就直接插入新记录
==>
这个直接用sql语句来判断
if exists (select count(名称) from 表名 where 名称='易经') update 表名 set 数量=你的数量 where 名称='易经' else insert into 表名() values()
这样行了,

------解决方案--------------------
将插入的数据和数据库中已经存在的数据进行比对,如果存在,那直接跳过,如果不存在,那进行插入操作。

------解决方案--------------------
要写两条SQL
//先删除tb1内与tb2相同编号的数据
DElete From tb1 Where f1 in(Select f1 From f2)
//批量导入
insert into tb1(f1,f2...) Select f1,f2... From tb2
------解决方案--------------------
引用:
如果库存表中有相同名称的,就直接更新数量;如果库存表中没有相同名称的,就直接插入新记录
==>
这个直接用sql语句来判断
if exists (select count(名称) from 表名 where 名称='易经') update 表名 set 数量=你的数量 where 名称='易经' else insert into 表名() values()
这样行……

+1

我记得帮同学写过这个代码,他也是通过数据实现的,记得当时写的是一个触发器。
------解决方案--------------------
利用Excel表导入功能吧,下面是一小段代码,把那些语句改一下,判断有重复的就执行更新数量的语句,没有就执行插入的语句。
 for (int i = 0; i < rows; i++)
                    {
                        string sql_getpk = "select * from oavehicle where ascode ='" + myds.Tables["oaasset"].Rows[i][0] + "'";
                        SqlDataAdapter myAdapter = new SqlDataAdapter(sql_getpk, myConn);
                        if (myAdapter.Fill(myds, "temp") != 0)
                        {
                            n++;
                            repeat += myds.Tables["oaasset"].Rows[i][0] + " " + myds.Tables["oaasset"].Rows[i][1] + " " + myds.Tables["oaasset"].Rows[i][8] + ", ";