【问题标题】:C# Auto Increment Primary Key with String?C# 使用字符串自动增加主键?
【发布时间】:2015-05-05 11:43:44
【问题描述】:

我是 C# 和编程的新手...

当表单加载主键必须自动加载到组合框时,它必须自动从最后一个值生成+1..例如,如果COUNT值为0,那么它必须像这样添加EMP01

这是我的代码:

class PrimaryKeyIncrement
{
    public void empPrimary() {
        Dbconnection ObjDb = new Dbconnection();
        ObjDb.ConnectWithDB();

        string empPri = "SELECT COUNT(EmployeeID) AS PK FROM Employees";
        SqlCommand Pri = new SqlCommand(empPri, ObjDb.conct);
        SqlDataReader rd = Pri.ExecuteReader();

        if(rd.Read()){
            string pk = rd["PK"].ToString();

            int IC = Int32.Parse(pk);
            IC++;

            string empPK = ("EMP")+IC.ToString();

            EmployeesManager EM = new EmployeesManager();
            EM.cmbEmployeeID.Items.Add(empPK).ToString();

        }        
    }

我在EmployeesManager 表单加载中调用了empPrimary() 方法。 没有错误,但组合框中没有加载任何内容

请帮帮我主键应该用 String EMP 加一

【问题讨论】:

  • 让您的数据库处理分配一个 PK。它会比你做得更好,这是它的工作的一部分,
  • 在代码中添加主键不是一个好习惯。您需要在数据库中执行此操作,并且在显示时必须使用 DataTextField 和 DataValueField 来显示。
  • @Plutonix 是的,但它必须添加 EMP,所以我在数据库中为主键提供了 varchar,只有整数可以在数据库中自动递增,对吗?
  • @Ahamed - 看起来你只需要用户看到它有“EMP”,数据库最好像 plutonix 所说的那样处理自己的 PK
  • @Sayse 是啊!!但根据情况,我必须与“EMP”有关,这就是我挣扎的原因......

标签: c# sql combobox primary-key auto-increment


【解决方案1】:

您遇到问题的实际原因是因为您要添加到 EmployeeManager 的组合框。您需要将对表单的引用传递到您的EmpPrimary

... EmpPrimary(this); //in your forms form load

public void empPrimary(EmployeeManager form){ //change the method parameters

form.cmbEmployeeID.Items.Add(empPK); // Now use the form reference in method

然而,正如 plutonix 所说,您应该让表单自己处理 PK

【讨论】:

    【解决方案2】:
    string empPK = ("EMP")+IC.ToString(); // "EMP1"
    string empPK = ("EMP")+IC.ToString("00"); // "EMP01"
    

    要使用 varchars 处理自动递增,请使用表格来映射对象类和整数位。

    AutoNumber([Type],[nextInt],[prefix])
    'Employee',1,'EMP'
    'Sales',0,'INV'
    

    创建一个函数来检索新员工的下一个值(在您的情况下)

    SELECT getAuto('Employee') // will return 'EMP01'
    

    然后创建一个过程,在添加新员工后自动增加AutoNumber 表的nextInt 的值

    【讨论】:

    • 这还能编译吗?
    猜你喜欢
    • 2022-11-15
    • 2017-12-30
    • 2013-09-28
    • 2018-06-05
    • 2015-07-18
    • 1970-01-01
    • 2011-04-26
    • 2010-12-09
    • 2015-10-24
    相关资源
    最近更新 更多