Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 关于自动id的生成_C#_Sql - Fatal编程技术网

C# 关于自动id的生成

C# 关于自动id的生成,c#,sql,C#,Sql,我想在文本框中生成一个自动ID SQL中的表如下所示 Create table employee(empid varchar(50),empname varchar(50),sal int) ID的格式必须是TOO0、T001、TOO2`,等等 识别“自然”键中的组件 您的键具有递增数值的字符串前缀 查找具有相同前缀的所有现有值的最大数值 这是一个棘手且有争议的问题,您需要查询数据库中的所有现有密钥以。。。类似的东西可以在SQL环境中工作 理想情况下,您应该在存储过程或insert语

我想在文本框中生成一个自动ID

SQL中的表如下所示

Create table employee(empid varchar(50),empname varchar(50),sal int)
ID的格式必须是
TOO0
T001
、TOO2`,等等

  • 识别“自然”键中的组件

    • 您的键具有递增数值的字符串前缀
  • 查找具有相同前缀的所有现有值的最大数值

    • 这是一个棘手且有争议的问题,您需要查询数据库中的所有现有密钥以。。。类似的东西可以在SQL环境中工作
  • 理想情况下,您应该在存储过程或insert语句中执行此操作,这样可以最大限度地减少或消除多个进程使用同一密钥生成行的风险

    作为双重检查,请确保向EMPID键添加唯一索引约束(如果它还不是主键)

    如果您在创建行之前将EnPLID显示给用户,那么考虑一个模型,其中首先插入行以保留密钥,用户从这里只更新空白条目。当然,如果他们选择取消操作,您现在需要删除该行

    我不是在讨论这是否是一个好的代码模式。对于那些说“ID应该只在DB中生成”的程序员,我同意,但是有很多有效的场景,您可能需要生成并使用“自然”密钥

    我强烈建议使用“代理”(显式生成以标识行的任意键)键作为数据库中所有数据行的主要标识符,这简化了ORMs和其他数据工厂工具的使用

    受保护的无效页面加载(对象发送方、事件参数e) { SqlConnection con=新的SqlConnection(strConnString)


    这是我的实际代码,它正在生成一个错误,因为无法将nvarchar值转换为1到数据类型int

    显示您的代码和更多解释。您也不应该这样做。保存数据时,ID应该在SQL端生成。否则,多个用户可以“生成”相同的ID(通过同时输入该页面)或者,在另一方面,如果仅仅因为用户进入该页面就在DB上创建了一个ID,那么用户可以直接退出而不保存,许多ID将被浪费。
    SELECT 'TOO' + Cast(MAX(Right(EMPID, LEN(EMPID)-3) + 1) 
    FROM   Employee  
    WHERE  EMPID LIKE 'TOO%'
    
        str = "select count(*) from employee";
    
        com = new SqlCommand(str, con);
    
        con.Open();
    
        count = Convert.ToInt16(com.ExecuteScalar()) + 1;
    
        txt_empid.Text = "E00" + count;
    
        con.Close();
    
    }
    
    protected void btn_insert_Click(object sender, EventArgs e)
    {
    
        SqlConnection con = new SqlConnection("Data Source=HP-PC;Initial Catalog=kriti;Integrated Security=True");
    
        con.Open();
    
        str = "insert into employee values('" + txt_empid.Text.Trim() + "','" + txt_empname.Text.Trim() + "'," + txt_sal.Text.Trim() + ")";
    
        com = new SqlCommand(str, con);
    
        com.ExecuteNonQuery();
    
        con.Close();
    
        Label4.Text = "Records successfully Inserted";
    
    }