C# 使用字符串自动递增主键?

C# Auto Increment Primary Key with String?

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

当表单加载主键必须自动加载到 comboBox 并且它必须从最后一个值自动生成 +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 Form load 中调用了 empPrimary() 方法。 没有错误,但组合框中没有加载任何内容

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

string empPK = ("EMP")+IC.ToString(); // "EMP1"
string empPK = ("EMP")+IC.ToString("00"); // "EMP01"

为了处理 varchars 的自动递增,使用 table 映射对象 class 和整数。

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

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

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

然后创建一个程序,在添加新员工

后自动增加 AutoNumber table 的 nextInt 的值

您遇到问题的真正原因是因为您要添加到 new 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