我想将修改好后的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();
可以先删除再写
能不能具体点,这么说我也知道,关键怎么删?
@巴索罗缪库玛:
建议按楼下的方案,用update更新
为何不直接SQL更新呢? UPDATE Table SET 字段=@字段 WHERE ……
但是这种的不是只能更新指定字段的么
@巴索罗缪库玛: 你数据库中的字段名称不可能改变吧,一些逻辑还是你程序中控制的,你可以说说你的需求;
你贴的代码每次还要循环,效率有点低效
@xu_happy_you: 我在定义了datatable dt;里面读的是数据库test的表a,我对dt进行修改,比如将第二行移到第五行,原来的三四五行分别上移一行,其余不变。我这样改变后,datatable中是改了,可是数据库中并没有改变,我应该怎么写才能让数据库中的表a里面存入改后的数据?表a原来有数据,我知道应该先删除原来的数据再写入新的数据,可是代码不会,能帮帮忙写一下吗?
@巴索罗缪库玛: 我觉得不应该先删除然后再插入;你第二行拖动到第五行,你弄个排序的字段,修改一下这个排序字段的值
@xu_happy_you: 可是我是在数组中操作的,而且datagridview都显示出变化了
@巴索罗缪库玛: 额,你就是不想每次操作都去数据库更新一次,然后再绑定,不然用户看见有点延迟,想法是对的!那把自己的每次操作用键值记录下来,就是每条记录的id和排序字段的最后值,然后等用户点击确定,就到数据库中更新(多条更新加上事务就可以了)
UPDATE Table SET 字段=@字段
不要条件就可以更新所有的指定字段了。