Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在插入数据库时使用字符创建序列号_C#_Sql Server_Sequence - Fatal编程技术网

C# 在插入数据库时使用字符创建序列号

C# 在插入数据库时使用字符创建序列号,c#,sql-server,sequence,C#,Sql Server,Sequence,如何在插入数据库时创建带有字符的序列号 此代码设计用于使用计算机设备信息存储程序。 “asse_no”是由分隔符+年份+四位数字组成的序列号。 “asse_gb”是选择用于存储的PC、笔记本电脑、显示器、打印机和数据,并分别与“PC”、“NB”、“MB”和“PR”一起输入到“asse_no”分类中 感谢您的帮助 我写的代码 { //make seq_no string year = DateTime.Now.ToString("

如何在插入数据库时创建带有字符的序列号

此代码设计用于使用计算机设备信息存储程序。 “asse_no”是由分隔符+年份+四位数字组成的序列号。 “asse_gb”是选择用于存储的PC、笔记本电脑、显示器、打印机和数据,并分别与“PC”、“NB”、“MB”和“PR”一起输入到“asse_no”分类中

感谢您的帮助

我写的代码

       {
           //make seq_no
           string year = DateTime.Now.ToString("yyyy");
           int i = 0;
           switch (cbx_asse_gb.Text)
           {
               case "PC":
                   tbx_asse_no.Text = "PC" + year + i.ToString("D4");
                   break;
               case "NB":
                   tbx_asse_no.Text = "NB" + year + i.ToString("D4");
                   break;
               case "MT":
                   tbx_asse_no.Text = "MT" + year + i.ToString("D4");
                   break;
               case "PR":
                   tbx_asse_no.Text = "PR" + year + i.ToString("D4");
                   break;
           }
this.gjmjs0TableAdapter.Insert(tbx_asse_no.Text.Trim(), tbx_asse_nm.Text.Trim(), cbx_asse_gb.Text.Trim(), tbx_juri_cd.Text, cbx_area_cd.Text, tbx_mode_nm.Text, tbx_seri_no.Text, tbx_purc_nm.Text, tbx_make_nm.Text, date_purc_date.Value, cbx_user_cd.Text, tbx_lan_ip.Text, tbx_gene_no.Text, tbx_acct_no.Text, tbx_remark.Text, cbx_flag_gb.Text, date_clos_date.Value, tbx_clos_deta.Text, bImage.ToString(), date_rent_fdate.Value, date_rent_tdate.Value, tbx_prop_flag.Text, tbx_rent_no.Text, tbx_addr.Text, purc_amt, cbx_use_mult.Text, rent_amt, date_make_date.Value, cbx_admi_cd.Text, cbx_dept_cd.SelectedValue.ToString(), tbx_asse_deta.Text, tbx_peri_devi.Text, tbx_hdd_capa.Text, tbx_cpu_size.Text, tbx_os_kind.Text, tbx_ram_capa.Text, null, null, Properties.Settings.Default.LoginIDSave, DateTime.Now);


最简单的方法是确保表中有一个标识列,该列将生成大致顺序的int,然后创建一个计算列来添加前缀。“asse_no”的数据类型是“varchar”,我不能,因为我不知道您是如何说的。我将引入一个新的C#type来封装子字段。特别是当您需要再次解析它时。然后只需存储在nvarchar数据库列中。如果使用EF,您可以定义自定义值映射或自定义函数,以便也可以查询子字段。确保数字是连续的、原子的等是一个更难的问题…当一个数据库由多个用户使用时,您必须使用存储过程以确保不会生成重复的序列号。见: