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
[解决办法]
}
myConn.Close();
}
if (n > 0)
{
Label1.Text = "导入失败:当前Excel表中共有" + n + "条记录与数据库中记录重复。<br />重复的主键为:" + repeat;
}
else
{
DatabaseControl dc = new DatabaseControl();
dc.Connect(connStr);
dc.BeginTransaction();
try
{
for (int i = 0; i < rows; i++)
{
insertSql = "insert into oavehicle values('";
bool canInsert = true;
for (int j = 0; j < cols; j++)
{
if (j == 0)
{
insertSql = insertSql + myds.Tables["oaasset"].Rows[i][j].ToString();
if (myds.Tables["oaasset"].Rows[i][j].ToString() == "")
{
canInsert = false;
}
}
else
{
insertSql += "','" + myds.Tables["oaasset"].Rows[i][j].ToString().Replace(" 0:00:00", "");
}
}
insertSql += "')";
if (canInsert)
{
dc.ExecSQL(insertSql);
}
}
dc.Commit();
Label1.Text = "数据已成功导入!";
BindGridView1();
}