为了账号安全,请及时绑定邮箱和手机立即绑定

在 C# 中自动生成字母数字 ID

在 C# 中自动生成字母数字 ID

C#
MM们 2021-10-23 17:28:37
我有一个自动生成的 id 的代码。它正在工作,但我的问题是结果。数字 LDLB001 到 LDLB009 很好,但是当它达到数字 10 时,结果是 LDLB0010...LDLB0011 等等。我想要的结果是 LDLB010 但我做不到。这是代码。希望您能够帮助我。    private void autogen()    {        try        {            conn.Open();            String count = "SELECT count(*) + 1 as a FROM tbl_user";            MySqlDataAdapter sda = new MySqlDataAdapter(count, conn);            DataTable dt = new DataTable();            sda.Fill(dt);            String strgen = dt.Rows[0]["a"].ToString();            MySqlCommand comm = new MySqlCommand("SELECT * FROM tbl_user WHERE userid = '" + "LDLB00" + strgen + "'", conn);            MySqlDataReader reader;            reader = comm.ExecuteReader();            if (reader.HasRows)            {                reader.Read();                strgen = (int.Parse(strgen) + 1).ToString();            }            conn.Close();            lblUserID.Text = "LDLB00" + strgen;        }        catch (Exception et)        {            MessageBox.Show(et.Message);        }    }
查看完整描述

3 回答

?
慕森卡

TA贡献1806条经验 获得超8个赞

尝试改变这个:String strgen = dt.Rows[0]["a"].ToString();String strgen = dt.Rows[0]["a"].ToString("D3");

这将确保您总是得到一个三位数字并用前导 0 填充。所以数字 1 是 001,10 是 010,100 是 100。

另外,不要忘记在这一行更改"LDLB00""LDLB"

MySqlCommand comm = new MySqlCommand("SELECT * FROM tbl_user WHERE userid = '" + "LDLB00" + strgen + "'", conn);

希望这可以帮助!


查看完整回答
反对 回复 2021-10-23
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

您可能会遇到 2 个或更多用户同时执行相同查询并以相同 id 结束的情况。两种可能的解决方案是让数据库通过使表自动增加主键来创建 id:


CREATE TABLE tbl_user (

    `id` int NOT NULL AUTO_INCREMENT,

    userid varchar(255) NOT NULL,

    PRIMARY KEY (`id`)

);

然后,用您的字符串作为 id 值的前缀。


string sql = "SELECT `id` AS `a` FROM tbl_user WHERE (some condition)"

...

string userid = dt.Rows[0]["a"].ToString("LDLB000")

这会将整数格式化为始终具有 LDLB 和 0 到 3 个前导零。例如,如果 a = 33,则 strgen = "LDLB033"。并且,如果 a = 5000,则 strgen = "LDLB5000"。


另一种解决方案是使用 Guid 创建唯一标识符:


string userid = Guid.NewGuid().ToString("N");


查看完整回答
反对 回复 2021-10-23
  • 3 回答
  • 0 关注
  • 210 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信