我无法使SQL ID(不是自动增量)增加,然后使用该值(alphanumaric)填充文本框。 我已跟随Stack Overflow获取增量,并Stack Overflow将值填充到文本框中。我没有看到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值。
答案 0 :(得分:0)
以下是我发现获取最后一个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;
答案 1 :(得分:0)
您正在使用一种用于数字的语法来“递增”一个字母数字字符串,这就是您在更新时收到错误的原因。
你不能这样做。
我会选择使用存储过程。
作为最后的手段,对我来说纯粹的邪恶是3个陈述:
1-选择以获得最高ID
2-C#to split&amp;递增数字部分,然后组装ID
3-更新的Sql语句
但您可以确定在线时会遇到问题,因为此解决方案无法正常处理并发...
我强烈建议存储过程
我认为你的sql在WHERE
语句中缺少UPDATE
子句:你确定要覆盖表中的每一行吗?