请教下我有个List<实体类>,如何批量修改更新数据库 C# & SQL SEVER

The Big Short 2016-08-20 12:15:17
我的话就是foreach循环遍历List<实体类>
然后根据实体主键作为where条件去UPDATE其他字段。
比如
update shares set price =20 where sharecode ='002269'
update shares set price =15 where sharecode ='000002'
.......
每个实体类都存了独特的price和sharecode。然后UPDATE

假设我的LIST集合存了几千条数据,那我就要循环几千遍。。。请问有没有更好的方法?

...全文
1459 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jb1475293450 2021-07-09
  • 打赏
  • 举报
回复

使用事物,可以先删除所有,再添加,感觉快点。

D56233577 2016-09-02
  • 打赏
  • 举报
回复
几千行顶多一两秒,虽然我知道怎么更快,但是由两秒变成一秒或者0.5秒到底有什么意义?
The Big Short 2016-09-02
  • 打赏
  • 举报
回复
引用 5 楼 yang1216 的回复:
事务呗 百度一下
这些数据不需要一致性,问的也不是事务
yang1216 2016-09-02
  • 打赏
  • 举报
回复
事务呗 百度一下
The Big Short 2016-09-02
  • 打赏
  • 举报
回复
引用 1 楼 u013277080 的回复:
1.可以把sql语句集合起来 一起去数据库执行 2.可以用datatable存下改动 调用方法执行
引用 2 楼 rokerker 的回复:
怎么会遍历几千次呢?遍历一次,然后一系列的update语句就生成了,只不过要你的底层支持运行批量SQL执行。List<SQLstring>给你的底层数据库驱动函数去执行。
你们的意思是把SQL语句整到一起, 比如说

string sql="Update trusts set price =10 where sharecode='000001';Update trusts set price =20 where sharecode='000002';Update trusts set price =15 where sharecode='000003';"
然后一起执行?
我叫小菜菜 2016-09-02
  • 打赏
  • 举报
回复
引用 3 楼 duanzi_peng 的回复:
http://msdn.microsoft.com/zh-cn/library/system.data.common.dataadapter.update(v=vs.110).aspx
版主啊,顺便解释下几个问题呗。感谢版主啊。
    DataSet dataSet = new DataSet();

    using (OleDbConnection connection =
               new OleDbConnection(connectionString))
    {
        connection.Open();
        OleDbDataAdapter adapter =
            new OleDbDataAdapter();
        adapter.SelectCommand =
            new OleDbCommand(queryString, connection);
        OleDbCommandBuilder builder =
            new OleDbCommandBuilder(adapter);

        adapter.Fill(dataSet);

        // Code to modify data in the DataSet here.

        // Without the OleDbCommandBuilder, this line would fail.
        adapter.UpdateCommand = builder.GetUpdateCommand();
        adapter.Update(dataSet);
    }
问题1: 这是要求,dataSet是完整的包含整张表的数据的吗,比如表有1000行数据,但是我某个查询只是获取500条。然后对500条进行增删改查之后,只剩下300条(有修改)。 那: adapter.UpdateCommand = builder.GetUpdateCommand(); adapter.Update(dataSet); 对它执行这个操作之后,表的状态是? 其原理是不是:select部分数据行,然后每一个Row都有一个RowState,Update(dataSet);会根据这个RowState执行增删改操作,不影响原有没填充到DataSet的数据? ------ 之前一直都是遍历list循环执行sql的,dataset一般都是只select用
rokerker 2016-08-22
  • 打赏
  • 举报
回复
怎么会遍历几千次呢?遍历一次,然后一系列的update语句就生成了,只不过要你的底层支持运行批量SQL执行。List<SQLstring>给你的底层数据库驱动函数去执行。
ojkofx 2016-08-22
  • 打赏
  • 举报
回复
1.可以把sql语句集合起来 一起去数据库执行 2.可以用datatable存下改动 调用方法执行

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧