增加sql ID列并将值放入“文本框”中
本文关键字:文本 文本框 ID sql 增加 | 更新日期: 2023-09-27 18:03:16
我有麻烦获得SQL ID(不是自动增量)增量,然后有该值(字母数字)填充一个文本框。我遵循堆栈溢出的增量和堆栈溢出填充值到文本框。我没有看到ID在递增,我的文本框仍然是空的。
谁能告诉我我做错了什么?
这是我遇到问题的代码:
protected void Page_Load(object sender, Eventargs e)
{
string ID_upd = "UPDATE table SET ID = ID + 1";
string ID_sel = "SELECT TOP 1 ID FROM table ORDER BY ID DESC";
SqlConnection IDcon = new SqlConnection(Connection string);
SqlCommand cmdupd = new SqlCommand(ID_upd, IDcon);
SqlCommand cmdsel = new SqlCommand(ID_sel, IDcon);
IDcon.Open();
cmdupd.ExecuteNonquery();
IDcon.Close();
try
{
IDcon.Open();
using (SqlDataReader read = cmdsel.ExecuteReader())
{
while (read.Read())
{
TextboxID.Text = (read["ID"].ToString());
}
}
}
finally
{
IDcon.close();
}
}
谢谢你的帮助。
编辑:我已经在我的测试页运行了这个。我成功地填充了文本框,但没有更新命令。在将varchar值"A12345"转换为数据类型int时,转换失败。此外,这不是我的最后一个ID值这是我找到的最后一个ID值,并使其增加。
protected void Page_Load(object sender, Eventargs e)
{
string ID_sel = "SELECT TOP 1 ID FROM table ORDER BY ID DESC";
SqlConnection IDcon = new SqlConnection(Connection string);
SqlCommand cmdsel = new SqlCommand(ID_sel, IDcon);
IDcon.Open();
SqlDataReader read = cmdsel.ExecuteReader();
read.Read();
string a = read["ID"].ToString();
TextboxID.Text = ();
for (int i = 0; i < 1; i++)
{
string val = a.Substring(1, a.Length - 1);
int newnumber = Convert.ToInt32(val) + 1;
a = "B" + newnumber.ToString("000000");
{
TextBoxID.Text = a;
IDcon.Close;
你正在使用的语法意味着数字'增量'的字母数字字符串,这就是为什么你得到错误的更新
你不能这样做。
我将使用存储过程。
作为最后的手段,对我来说是纯粹的邪恶是3个声明:
1-选择获取最大的id
2- c#分割&增加数字部分,然后组装ID
3- Sql语句更新
但是你可以肯定的是,当你在线时,你会遇到问题,因为这个解决方案不能优雅地处理并发…
我强烈建议使用存储过程
我也认为你的sql在UPDATE
语句中缺少WHERE
子句:你确定你要覆盖表中的每一行吗?