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

时间:2015-03-04 13:04:51

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

我是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 loading中调用了empPrimary()方法。 comboBox中没有任何错误但没有加载

Out put results Nothing showing in comboBox

请帮助我使用String EMP将主键增加一个

2 个答案:

答案 0 :(得分: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本身

答案 1 :(得分:-1)

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

用于处理varchars的自动增量,使用表来映射对象类和整数位。

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

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

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

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