2010-05-20 93 views
2

而进入一个新的条目,我想分配记录的唯一ID 像数字的情况下,我在这种情况下m该方式自动ID生成是在vb.net主键

Dim ItemID As Integer 
KAYAReqConn.Open() 
SQLCmd = New SqlCommand("SELECT ISNULL(MAX(ItemID),0) AS ItemID from MstItem", ReqConn) 
Dim dr As SqlDataReader 

dr = SQLCmd.ExecuteReader 
If dr.HasRows Then 
    dr.Read() 
    ItemID = dr("ItemID") + 1 
End If 
dr.Close() 

使用itemid作为唯一ID ,格式为1,2,3 ... ,并且m找出最大值并分配给新记录,但是如果先前的id是a00001,a00002,a00003,a00004 ...等等。 我如何在这种情况下生成唯一的ID

+0

难道你不能将数据库的字段从varchar更改为int吗? – Himadri 2010-05-20 10:12:07

回答

0

对于这两种情况,您最好在数据库中使用自动递增的int标识字段。

对于'a0001',您仍然可以更好地将其存储为整数,并且如果'a0000'用于显示,则将其附加到代码中。或者可能有一个前缀字段来存储'a'部分 - 这取决于您的要求。

+0

我如何写一个查询,因为我已经在我的数据库中有这些格式,并希望从中找到最大值并分配一个新值 – abhi 2010-05-20 10:01:12

+0

我有id作为varchar – abhi 2010-05-20 10:01:56

+0

@abhi - 你能改变它吗? – Paddy 2010-05-20 10:09:49

1

您可以获取所有的id,进入一个其一个,打破了ID,并采取只有整数部分,从他们那里得到最大,产生下一个ID和prefix..store它concate吧..

这可能是一个耗时的过程,但我没有找到任何其他方式。