我想在我的项目中创建一个自动编号....
我使用vb .net 2008和SQl server 2005作为后端??
我想创建一个序列号,就像 abc / 2010/01。。在此..
但我怎么能这样做......? 以及如何我从序列号中找到最大号码 ..... ??? 我怎么能保持它,如果我删除它然后所有删除序列号将放置它的位置..(删除序列号没有中断) ?????? 请帮帮我......
答案 0 :(得分:1)
这是生成newid的代码段 我采用了一个简单的标签和文本框 label将自动生成newid,textbox将在数据库中插入新记录 在设计页面中选择标签和文本框
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
public static int temp;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
newcode();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=practice;Integrated Security=True;");
con.Open();
SqlCommand cmd = new SqlCommand("Insert into frmlogin(id,username) values ("+ temp+",'"+TextBox1.Text+"')", con);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("username", TextBox1.Text);
cmd.ExecuteNonQuery();
con.Close();
TextBox1.Text = "";
Label1.Text = "";
newcode();
}
public void newcode()
{
SqlConnection con1 = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=practice;Integrated Security=True;");
con1.Open();
SqlCommand cmd2 = new SqlCommand("Select Max(id) as empid from frmlogin", con1);
cmd2.CommandType = CommandType.Text;
SqlDataReader r = cmd2.ExecuteReader();
r.Read();
if (r["empid"].ToString() != "")
{
temp = int.Parse(r["empid"].ToString()) + 1;
}
else
{
temp = 1;
}
Label1.Text= temp.ToString();
r.Close();
con1.Close();
}
}
最重要的是你应该在某个地方保持增加的数字,在我的情况下,我使用了文本框和标签。
但我确实建议你去寻找GUID或随机数。
表示GUID:
System.Guid.NewGuid().ToString();
还要看here
用于随机数生成
:::使用随机类型[C#] :::
的程序using System;
class Program
{
static void Main()
{
Random random = new Random();
Console.WriteLine(random.Next());
Console.WriteLine(random.Next());
}
}
::: Output of the program :::
1592498984
1526415661
尝试this
答案 1 :(得分:1)
您可以将序列号存储在数据库表中,其中数字的第三个组成部分是表的主键作为标识字段。每次创建新序列号时,都会将当前年份和静态文本插入表格中。一种简单的方法是将该逻辑包装在不带参数的存储过程中,在内部插入当前年份和文本,并将整个序列号作为单个标量值返回。
类似的东西:
INSERT INTO SerialNumbers (Year, Name) VALUES (year(getdate()), 'abc')
和
SELECT Name + '/' + CAST(Year AS nvarchar) + '/' + CAST(ID AS nvarchar) FROM SerialNumbers WHERE ID = SCOPE_IDENTITY()