我有一个表和一个像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 我的错了什么?
答案 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。