首页新闻找找看学习计划

c# 为什么我修改了datatable后,再更新数据库,只是在原来的表中的行往后加,却不是重新写?应该怎么改啊?

0
[待解决问题]
我想将修改好后的datatable写入数据库中当前的a表,a表原来有数据,想覆盖掉。
我的代码:dt是之前定义好的datatable
string cs = "server=.;integrated security=SSPI;database=test";
SqlConnection conn = new SqlConnection(cs);
 conn.Open();
 SqlCommand cmd = new SqlCommand("select * from a", conn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
SqlCommandBuilder scb = new SqlCommandBuilder(da);
da.Fill(dt);
DataRow dr = dt.Rows[0];
for (int j = 0; j < dt.Rows.Count; j++) //修改table中每一行的内容  
{
        dr = dt.Rows[j];
 }
da.Update(dt);
conn.Close();
巴索罗缪库玛的主页 巴索罗缪库玛 | 初学一级 | 园豆:48
提问于:2012-05-14 09:47
< >
分享
所有回答(3)
0

可以先删除再写

artwl | 园豆:16526 (专家六级) | 2012-05-14 10:52

能不能具体点,这么说我也知道,关键怎么删?

支持(0) 反对(0) 巴索罗缪库玛 | 园豆:48 (初学一级) | 2012-05-14 11:04

@巴索罗缪库玛: 

建议按楼下的方案,用update更新

支持(0) 反对(0) artwl | 园豆:16526 (专家六级) | 2012-05-14 11:06
0

为何不直接SQL更新呢? UPDATE Table SET 字段=@字段 WHERE ……

xu_happy_you | 园豆:222 (菜鸟二级) | 2012-05-14 10:59

但是这种的不是只能更新指定字段的么

支持(0) 反对(0) 巴索罗缪库玛 | 园豆:48 (初学一级) | 2012-05-14 11:11

@巴索罗缪库玛: 你数据库中的字段名称不可能改变吧,一些逻辑还是你程序中控制的,你可以说说你的需求;

你贴的代码每次还要循环,效率有点低效

支持(0) 反对(0) xu_happy_you | 园豆:222 (菜鸟二级) | 2012-05-14 11:37

@xu_happy_you: 我在定义了datatable dt;里面读的是数据库test的表a,我对dt进行修改,比如将第二行移到第五行,原来的三四五行分别上移一行,其余不变。我这样改变后,datatable中是改了,可是数据库中并没有改变,我应该怎么写才能让数据库中的表a里面存入改后的数据?表a原来有数据,我知道应该先删除原来的数据再写入新的数据,可是代码不会,能帮帮忙写一下吗?

支持(0) 反对(0) 巴索罗缪库玛 | 园豆:48 (初学一级) | 2012-05-14 13:46

@巴索罗缪库玛: 我觉得不应该先删除然后再插入;你第二行拖动到第五行,你弄个排序的字段,修改一下这个排序字段的值

支持(0) 反对(0) xu_happy_you | 园豆:222 (菜鸟二级) | 2012-05-14 13:51

@xu_happy_you: 可是我是在数组中操作的,而且datagridview都显示出变化了

支持(0) 反对(0) 巴索罗缪库玛 | 园豆:48 (初学一级) | 2012-05-14 14:49

@巴索罗缪库玛: 额,你就是不想每次操作都去数据库更新一次,然后再绑定,不然用户看见有点延迟,想法是对的!那把自己的每次操作用键值记录下来,就是每条记录的id和排序字段的最后值,然后等用户点击确定,就到数据库中更新(多条更新加上事务就可以了)

支持(0) 反对(0) xu_happy_you | 园豆:222 (菜鸟二级) | 2012-05-14 15:00
0

 UPDATE Table SET 字段=@字段 

不要条件就可以更新所有的指定字段了。

再见2019 | 园豆:11647 (专家六级) | 2012-05-14 11:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册