【问题标题】:how to automatically manage the serial number in a database?如何自动管理数据库中的序列号?
【发布时间】:2014-07-13 12:57:06
【问题描述】:

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

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

提前致谢

【问题讨论】:

  • 如果,所谓的“序列号”只是分配给每个记录以唯一标识该记录的序列号,那么只需使用 IDENTITY 列并忘记重新排序部分。分配后的“序列号”永远不会改变。
  • 跟随史蒂夫的指示,在这里您可以找到有关如何设置它的一些详细信息stackoverflow.com/questions/13900065/…
  • 序列号实际上是在应用程序的查看所有记录部分显示给用户的。因此,用户也可以使用它来计算记录数。这就是为什么我担心记录的正确编号。基本上,我不想从应用程序本身发送这个特定字段的值。相反,我希望自动分配值。而且,我已经定义了电话号码。作为表的主键。
  • sql有一个count函数可以用来统计记录数。
  • 电话号码对于主键来说是一个糟糕的选择,原因有两个。一,它可以改变。二、可以多人共享。

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


【解决方案1】:

嗯,每次在数据库中注册记录时,您都必须调用一个函数。在分配记录前检查数据库上的最后一个编号并添加计数并将相同的编号保存为序列号。在数据库中创建一个以 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();
    }
}

享受吧!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 2012-09-10
    • 2013-09-23
    • 1970-01-01
    • 2017-02-16
    • 2012-02-25
    • 1970-01-01
    相关资源
    最近更新 更多