我有一个访问数据库我想为列userId生成ID,但是当我删除i记录时,我希望我的代码再次使用它的id

时间:2017-03-21 19:23:27

标签: c#

我有一个访问数据库我想为列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;
    }

我不知道为什么它不起作用

2 个答案:

答案 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;
    }