我有一个访问数据库我想为列userId生成ID但是当我删除i记录时我希望我的代码再次使用它的id 这是我的代码
public int codeUsers()
{
DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter("select userId from Users",connection);
da.Fill(dt);
var value = dt.Rows[0][0];
if (value==DBNull.Value)
{
myNewIdUsers = 1;
}
else
{
for (int i = 0; i < dt.Rows.Count; i++)
{
if (i == dt.Rows.Count - 1)
{
myNewIdUsers = Convert.ToInt32(dt.Rows[i][0]) + 1;
break;
}
else if (Convert.ToInt32(dt.Rows[i][0]) != Convert.ToInt32(dt.Rows[i+1][0]) - 1)
{
myNewIdUsers = Convert.ToInt32(dt.Rows[i][0]) + 1;
break;
}
}
}
return myNewIdUsers;
}
我不知道为什么它不起作用
答案 0 :(得分:0)
看起来你错过了代码中for
语句的括号,我添加了它......这可能是你的问题吗?
答案 1 :(得分:0)
这个问题只是在sql语句中命令我的数据代码是
public int codeUsers()
{
DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter("select userId from Users order by userId",connection);
da.Fill(dt);
var value = dt.Rows[0][0];
if (value==DBNull.Value)
{
myNewIdUsers = 1;
}
else
{
for (int i = 0; i < dt.Rows.Count; i++)
{
if (i == dt.Rows.Count - 1)
{
myNewIdUsers = Convert.ToInt32(dt.Rows[i][0]) + 1;
break;
}
else if (Convert.ToInt32(dt.Rows[i][0]) != Convert.ToInt32(dt.Rows[i+1][0]) - 1)
{
myNewIdUsers = Convert.ToInt32(dt.Rows[i][0]) + 1;
break;
}
}
}
return myNewIdUsers;
}