C# 怎样自动生成流水号

点击添加怎样自动生成流水号保存到数据库表id字段中?流水号是个三位数,初始化从000开始,添加一次累加一次,打开之前要判断数据库表id字段中是否有数据,有的话取出最大的作... 点击添加怎样自动生成流水号保存到数据库表id字段中? 流水号是个三位数,初始化从000开始,添加一次累加一次,打开之前要判断数据库表id字段中是否有数据,有的话取出最大的作为初始值。 展开
 我来答
邂逅丶倥偬岁月
2015-09-22 · TA获得超过140个赞
知道小有建树答主
回答量:145
采纳率:100%
帮助的人:82.5万
展开全部
你要什么样格式的?
给你个生成流水号的存储过程看看,这个是字母加日期的流水号,三个输入参数。
USE [WXLH_MES]
GO
/****** Object: StoredProcedure [dbo].[P_Get_SYS_SERAIL] Script Date: 09/22/2015 14:03:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author: evan
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[P_Get_SYS_SERAIL]
-- 序列号类型头
@TITLETYPE NVARCHAR(10) ,
-- 自增长长度
@LENGTH INT ,
-- 获得新的序列号
@RESULT NVARCHAR(100) OUT
AS
BEGIN

DECLARE @TYPE NVARCHAR(10);
DECLARE @LEN INT;
DECLARE @PREFIX NVARCHAR(20);
SET @TYPE = @TITLETYPE;
SET @LEN = @LENGTH;
--SET @PREFIX = CONVERT(NVARCHAR(10), GETDATE(), 112);
SET @PREFIX = SUBSTRING(CONVERT(NVARCHAR(10), GETDATE(), 112),3,LEN(CONVERT(NVARCHAR(10), GETDATE(), 112))-2);
IF NOT EXISTS ( SELECT *
FROM dbo.tb_serials
WHERE serial_type = @TYPE )
BEGIN
INSERT INTO dbo.tb_serials
( serial_type ,
next_value ,
prefix ,
sn_length
)
VALUES ( @TYPE , -- serial_type - varchar(50)
1 , -- next_value - bigint
@PREFIX , -- prefix - nvarchar(30)
@LEN -- sn_length - int
)
END
IF NOT EXISTS ( SELECT *
FROM dbo.tb_serials
WHERE serial_type = @TYPE
AND prefix = @PREFIX )
BEGIN
UPDATE dbo.tb_serials
SET prefix = @PREFIX ,
next_value = 1
WHERE serial_type = @TYPE
END
DECLARE @strResult NVARCHAR(40);
SELECT @strResult = ( serial_type + prefix + REPLICATE('0',
@LEN
- LEN(next_value))
+ CAST(next_value AS NVARCHAR) )
FROM tb_serials
WHERE serial_type = @TYPE
AND prefix = @PREFIX
UPDATE dbo.tb_serials
SET next_value = 1 + next_value
WHERE serial_type = @TYPE
set @RESULT= @strResult

END
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
sxhgga
2014-07-16 · TA获得超过687个赞
知道小有建树答主
回答量:1019
采纳率:74%
帮助的人:638万
展开全部
你不是已经把思路写出来了吗。
就是取出最大值,无数据就为1.
更多追问追答
追问
我不知道怎么判断表里面是否有数据,也不知道怎么取出最大值,我想初始化三位数001总是会变成1,小白就代码,
追答
判断是否有数据: 查询数据库 select max(id) from biao 其他代码自己写。
001是字符串,在数据库中如果为int类型 那么会变成1,可以用varchar类型

在程序中就定义为string,就可以为001.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
可变数据VDP软件
2020-12-23 · TA获得超过332个赞
知道小有建树答主
回答量:1064
采纳率:92%
帮助的人:54.3万
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiangjuan314
2016-01-18 · TA获得超过3.3万个赞
知道大有可为答主
回答量:2.9万
采纳率:0%
帮助的人:2897万
展开全部
流水号由8位日期加8位顺序号组成,如2010030200000056。
先从数据库中取中最大的流水号,和此时要生成的日期比较是否在同一天,是则顺序号加1,否则重新以此时日期生成流水号

方法一,通过sql:
select max(serialnumber) as maxSerialNumber from tb
从数据库获取最大流水号后,调用GetSerialNumber方法。

/// <summary>
/// 生成充值流水号格式:8位日期加8位顺序号,如2010030200000056。
/// </summary>
public string GetSerialNumber(string serialNumber)
{
if (serialNumber != "0")
{
string headDate = serialNumber.Substring(0, 8);
int lastNumber = int.Parse(serialNumber.Substring(8));
//如果数据库最大值流水号中日期和生成日期在同一天,则顺序号加1
if (headDate == DateTime.Now.ToString("yyyyMMdd"))
{
lastNumber++;
return headDate + lastNumber.ToString("00000000");
}
}
return DateTime.Now.ToString("yyyyMMdd") + "00000001";
}

方法二
/生成消费单号,按日期生成单号,默认是年月日+四位数字,如:200906010001;后四位数字可以自动增长位数。

///LastNumStr目前数据库中最后的单号
public static String Assignment(String LastNumStr)
{
string number0 = "";
DateTime date = System.DateTime.Now;
string year = date.Year.ToString();
string month = date.Month.ToString();
string day = date.Day.ToString();
if (month.Length < 2)
month = '0' + month;
if (day.Length < 2)
day = '0' + day;

string ymd = year + month + day;

if (LastNumStr.Length < 8 || LastNumStr.Substring(0, 8) != ymd)
{
return ymd + "0001";
}
else
{
Int32 clientnumber = Convert.ToInt32(LastNumStr.Substring(8, LastNumStr.Length - 8)) + 1;
if (clientnumber.ToString().Length > LastNumStr.Length - 8)
{
return ymd + clientnumber.ToString();
}
else
{
for (int i = 0; i < LastNumStr.Length - 8 - clientnumber.ToString().Length; i++)
{
number0 += "0";
}
return ymd + number0 + clientnumber.ToString();
}

}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
s98123654654
2014-07-16 · 超过10用户采纳过TA的回答
知道答主
回答量:69
采纳率:0%
帮助的人:11.9万
展开全部
select @@IDENTITY
能够获得你下次插入的ID
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式