写入sql列,数字从1到1000

时间:2014-04-29 10:21:40

标签: sql sql-server-2008 field return-value

我有一个表和一个像ID这样的字段(后来又添加了),我想写到我的表的ID字段,数字从1到1000.为此我写了这样的代码

            for (int i = 0; i < 75440; i++)
            {
                baglan.Open();
                SqlCommand kmt = new SqlCommand();
                kmt.Connection = baglan;
                kmt.CommandText = "UPDATE EvrakArsiv SET ID='" + (i + 1) + "' ";
                try
                {
                    kmt.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                baglan.Close();
            }
            for (int i = 0; i < 75440; i++)
            {
                baglan.Open();
                SqlCommand kmt = new SqlCommand();
                kmt.Connection = baglan;
                kmt.CommandText = "UPDATE EvrakArsiv SET ID='" + (i + 1) + "' ";
                try
                {
                    kmt.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                baglan.Close();
            }

但它在ID字段上返回一个值:所有行值都相同。像945,像1745,像3578 我的错了什么?

4 个答案:

答案 0 :(得分:0)

更新语句中缺少WHERE子句

答案 1 :(得分:0)

试试这个..

ID中将Identity列设为DBMS。 与此http://stackoverflow.com一样,它会自动从表中的1插入值,然后使用DBCC CHECKIDENT命令为新条目设置Identity列。

答案 2 :(得分:0)

这里缺少

WHERE子句。什么使您的行唯一在WHERE子句

中给出这些条件

答案 3 :(得分:0)

您可以使用以下查询来更新列:

with cte
As
(
SELECT     <column list separated by comma>, Id, 
    ROW_NUMBER() over(order by <column name>) rno
    FROM EvrakArsiv 
)
Update cte
set Id = rno

它将对order by子句中提到的列进行虚拟排序,然后将行号设置为表中的相应Id。