增加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值

增加sql 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子句:你确定你要覆盖表中的每一行吗?