c# - 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();
有用
解决方案
您的错误描述与您的问题标题或描述不匹配。你应该解决这个问题。
问题的原因:话虽如此,SqlCommand
确实需要连接,并且您永远不会将连接分配给命令。
建议的解决方案:最简单的方法是使用还需要连接SqlCommand(cmdText, connection) 文档的构造函数。
cmd = new SqlCommand(query1, conn);
与您的问题无关,但它可能会咬您的屁股或以后,您应该知道/考虑的几件事:
该
ALTER TABLE
语句不允许该WHERE
子句,请查看TSQL ALTER TABLE 文档。@KekuSemau 的问题评论中已经提到了这一点。SqlConnection
确实实现IDisposable
并且您的代码不调用Dispose()
也不使用using 语句。我建议使用该using
语句。
推荐阅读
- jquery - 使用节点的 Ajax 发布到 sql 不断增加发送的数据
- matlab - 如何在下一次计算中使用之前的数据?
- typescript - 是否可以为方法装饰器选项提供类型安全
- javascript - 在对象上创建“方法”方法
- firebase - 如何做一个飞镖颤动的火力基地查询连接
- javascript - jsPDF:fromHTML 与 addHTML
- ionic3 - Ionic 3 加载控制器中的 Lottie 动画
- php - PHP 代码(使用 AWS S3 开发工具包)挂起异常而不是出错
- javascript - 覆盖打开后如何防止正文滚动?
- javascript - 使用 gulp 支持旧版浏览器