首页 新闻 会员 周边 捐助

项目中的排序问题

0
悬赏园豆:5 [已解决问题] 解决于 2012-09-24 10:59

在显示所有信息中有一个字段是排序用的,这个字段在添加一个新的数据时的值都是1(以前的这个数据值先加1,再执行添加的。),其中的操作有点击向上向下,同时又拖动,改变的值都是这个字段。现在的问题就是添加的数据过几百条了添加数据就很慢了。大家有什么好的办法,给指点点????????

沅江的主页 沅江 | 初学一级 | 园豆:151
提问于:2012-09-24 09:07
< >
分享
最佳答案
0

不要一条一条添加,把sql StringBuilder起来,最后一次性执行

收获园豆:5
田林九村 | 老鸟四级 |园豆:2367 | 2012-09-24 09:10

能说明白点吗??谢谢

沅江 | 园豆:151 (初学一级) | 2012-09-24 09:16

@沅江: 

StringBuilder sb = new StringBuilder();
            foreach ()
            {
                    sb.Append(插入数据库的脚本);
            }
执行sql语句 sb.ToString()
田林九村 | 园豆:2367 (老鸟四级) | 2012-09-24 09:19

@田林九村: StringBuilder sb = new StringBuilder();
                for (int i = 0; i < dt.Rows.Count; i++)
             {
                    sb.Append("update T_info set sort=sort+1 where id=" + Convert.ToInt32(dt.Rows[i]["id"].ToString()));
             }
                Db.DoSql(sb.ToString());

你看下  这样报错啊

沅江 | 园豆:151 (初学一级) | 2012-09-24 09:56

@沅江: update T_info  前面加一个空格即可

田林九村 | 园豆:2367 (老鸟四级) | 2012-09-24 09:58

@田林九村:  update T_info set sort=sort+1 where id=323 update T_info set sort=sort+1 where id=324 update T_info set sort=sort+1 where id=320 update T_info set sort=sort+1 where id=321    这个语句报错,每个修改语句后面是不是还要添加什么哦??

沅江 | 园豆:151 (初学一级) | 2012-09-24 10:06

@沅江: 报什么错呢?或者你把这个语句直接拷贝到sql studio里面执行一下看报什么错

田林九村 | 园豆:2367 (老鸟四级) | 2012-09-24 10:10

@田林九村: 语法错误 (操作符丢失) 在查询表达式 update T_info set sort=sort+1 where id=324 update T_info set sort=sort+1 where id=320 update T_info set sort=sort+1 where id=321' 中。

沅江 | 园豆:151 (初学一级) | 2012-09-24 10:15

@沅江: 在查询表达式 update T_info set sort=sort+1 where id=324 update T_info set sort=sort+1 where id=320 update T_info set sort=sort+1 where id=321' 中 你这里面321后面怎么有一个单引号?

田林九村 | 园豆:2367 (老鸟四级) | 2012-09-24 10:21

@田林九村: 传过去的sql是这样的 update T_info set sort=sort+1 where id=334 update T_info set sort=sort+1 where id=335 update T_info set sort=sort+1 where id=320  

但是报错是    语法错误 (操作符丢失) 在查询表达式 'id=334 update T_info set sort=sort+1 where id=335 update T_info set sort=sort+1 where id=320' 中。

沅江 | 园豆:151 (初学一级) | 2012-09-24 10:48

@沅江: 我知道哪儿错了  ,   我这个项目是access数据库   ,谢谢?

沅江 | 园豆:151 (初学一级) | 2012-09-24 10:59

@沅江:你的脚本在执行过程中被中途截断了?看看哪个地方产生了这个问题?或者试试分批执行呢?

StringBuilder sb = new StringBuilder();
                for (int i = 0; i < dt.Rows.Count; i++)
             {
                    sb.Append("update T_info set sort=sort+1 where id=" + Convert.ToInt32(dt.Rows[i]["id"].ToString()));

                    if(sb.Length>1000)

                           Db.DoSql(sb.ToString());

                    sb.Clear();
             }

if(sb.Length>0) 

           Db.DoSql(sb.ToString());

田林九村 | 园豆:2367 (老鸟四级) | 2012-09-24 11:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册