如何自动管理数据库中的序列号?

时间:2014-07-13 12:57:07

标签: sql vb.net visual-studio-2012

我在vb.net中创建了一个应用程序,它接受来自用户的值并将它们插入到数据库中(在SQL Server 2008中创建)。它接受应用程序本身的名称,地址,电话号码等。但问题是,用户还需要在应用程序中输入序列号。有没有办法自动管理序列号?因为没有人记得最后一条记录的序列号。因此,每次需要在为新记录分配序列号之前检查数据库中最后一条记录的序列号。

我还想要如果从数据库中间删除任何记录,则应自动调整序列号。所以,我想要的是,序列号应该自动分配,如第一条记录为1,下一条记录为2,3,4,5,6 ......等等。但是如果删除序列号5对应的记录,则s.no. 6应成为s.no. 5。

提前致谢

1 个答案:

答案 0 :(得分:0)

每次在数据库中注册记录时,都必须调用一个函数。在分配记录之前,不检查数据库上的最后一个号码并添加计数并保存与序列号相同的号码。在数据库中创建一个以serial_no作为主键的列

CREATE TABLE table_name
(
Serial_no int NOT NULL,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (Serial_no)
);

抱歉我对VB不熟悉,我在这里提供C#解决方案,希望你对这段代码有所了解。

public void create_serial_no()
{
    using (var connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["my_database_name"].ConnectionString))
    using (var command = connection.CreateCommand())
    {
        command.CommandText = "SELECT [Serial_no] FROM table_name";
        connection.Open();
        string strs = command.CommandText;
        string i = null;
        int j = 0;
        using (var reader = command.ExecuteReader())
        {
            while (reader.Read())
                i = reader["Serial_no"].ToString(); ;
        }
        j = Convert.ToInt32(i);
        int k = 0;

        k = j + 1;
        // this is a serial no generated automaticall by the database
        textBox1.Text = k.ToString();
    }
}

享受!