首页 > 解决方案 > 1000后递增值,不自动递增SQL

问题描述

我想User_ID相对于 1000 递增。当用户进入系统时,它会计算它。但我不想使用身份增量,因为我已经做了 ID 身份增量。我这样做只是为了能够随时在备份中更改它。我在 SQL Server 中创建了第一个用户。ID 为 1000。

这是我的代码:

string query1 = "ALTER TABLE UserInfo WHERE User_ID ORDER BY User_ID ASC SET IDENTITY_CACHE=ON";

int i;           

cmd = new SqlCommand(query1);
conn.Open();

// I get an error here: "Connection property has not been initialized."
i = Convert.ToInt32(cmd.ExecuteScalar()) + 1; 
conn.Close(); 

// "ALTER TABLE UserInfo WHERE User_ID ORDER BY User_ID ASC
string query = "INSERT INTO UserInfo(User_ID, Name, Surname, Birth_Date, Reg_Date) VALUES (@User_ID, @Name, @Surname, @Birth_Date, @Reg_Date)";
cmd = new SqlCommand(query, conn);

cmd.Parameters.AddWithValue("@User_ID", i);
cmd.Parameters.AddWithValue("@Name", TextBox1.Text);
cmd.Parameters.AddWithValue("@Surname", TextBox2.Text);
cmd.Parameters.AddWithValue("@Birth_Date", TextBox3.Text);
cmd.Parameters.AddWithValue("@Reg_Date", DateTime.Now.ToString());

conn.Open();
cmd.ExecuteNonQuery();
conn.Close();

编辑的部分是:

string query1 = "SELECT User_ID FROM UserInfo ORDER BY User_ID DESC"; //User_ID 相对于 1000 再增加一

            cmd = new SqlCommand(query1, conn);

        
            conn.Open();
        int i = Convert.ToInt32(cmd.ExecuteScalar());
        i = i + 1;
            conn.Close();

有用

标签: c#sqlasp.netsql-server

解决方案


您的错误描述与您的问题标题或描述不匹配。你应该解决这个问题。

问题的原因:话虽如此,SqlCommand确实需要连接,并且您永远不会将连接分配给命令。

建议的解决方案:最简单的方法是使用还需要连接SqlCommand(cmdText, connection) 文档的构造函数。

cmd = new SqlCommand(query1, conn);

与您的问题无关,但它可能会咬您的屁股或以后,您应该知道/考虑的几件事:

  1. ALTER TABLE语句不允许该WHERE子句,请查看TSQL ALTER TABLE 文档。@KekuSemau 的问题评论中已经提到了这一点。

  2. SqlConnection确实实现IDisposable并且您的代码不调用Dispose()也不使用using 语句。我建议使用该using语句。


推荐阅读