You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

主键约束冲突求助:Blackjack游戏注册数据无法入库

解决Blackjack注册功能的主键约束冲突问题

错误原因分析

你遇到的两个报错本质都是主键字段出现重复值:

  • 报错“重复键值是0”:说明主键字段未设置自动增量,每次插入时默认值为0,第二次插入就触发重复冲突。
  • 泛型主键冲突:要么是主键字段(比如用户名)被重复输入,要么是主键ID未生成唯一值。

针对性解决方案

第一步:确认表的主键类型

先打开数据库,查看Tbl_registration的主键字段:

  • 如果主键是自增ID类字段(比如UserID):按方案一处理。
  • 如果主键是Username字段:按方案二处理。

方案一:主键为自增ID字段时

  1. 修改表结构,开启自动增量
    执行SQL语句(替换UserID为你表中的主键字段名):

    ALTER TABLE Tbl_registration
    ALTER COLUMN UserID INT IDENTITY(1,1) PRIMARY KEY;
    

    这条语句会把主键字段设置为从1开始,每次自动递增1,数据库会自动生成唯一主键值,无需手动赋值。

  2. 调整窗体跳转逻辑
    你当前的按钮事件先关闭窗体再执行注册,可能导致注册逻辑失效,改为先注册再跳转:

    private void BtnRegistered_Click(object sender, EventArgs e)
    {
        register();
        // 注册成功后再跳转登录页
        if (!sql.ErrorChecking(false))
        {
            var myForm = new Login();
            myForm.Show();
            Close();
        }
    }
    

方案二:主键为Username字段时

  1. 注册前检查用户名是否已存在
    修改register方法,先查询数据库验证用户名唯一性:

    void register()
    {
        // 检查用户名是否已存在
        sql.Params("@Username", UNtxtBox.Text);
        sql.query("SELECT COUNT(*) FROM Tbl_registration WHERE Username = @Username");
        if (Convert.ToInt32(sql.dt.Rows[0][0]) > 0)
        {
            MessageBox.Show("该用户名已被注册,请更换");
            return;
        }
    
        // 执行注册插入
        sql.Params("@Username", UNtxtBox.Text);
        sql.Params("@Password", PasswordtxtBox.Text);
        sql.Params("@Email", EAtxtBox.Text);
        sql.Params("@FirstName", FNtxtBox.Text);
        sql.Params("@Surname", SNtxtBox.Text);
        sql.Params("@DOB", DOBtxtBox.Text);
        sql.Params("@Mnumber", IDtxtBox.Text);
        sql.query("INSERT into Tbl_registration(Username, Password, Email, FirstName, Surname, DOB, Mnumber)" + "VALUES(@Username, @Password, @Email, @FirstName, @Surname, @DOB, @Mnumber)");
        
        if (sql.ErrorChecking(true)) 
        {
            return;
        }
        MessageBox.Show("注册成功||| 欢迎来到Blackjack");
    }
    
  2. 优化跳转逻辑
    同方案一,确保注册成功后再跳转登录页,避免无效操作。


内容的提问来源于stack exchange,提问作者Rutters

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 06:25:18