在 SQL 服务器和 C# 中获取最后插入的字符串 ID

Get the last inserted string Id in SQL Server & C#

我有一个 DataTable BonLivraison,其主键是格式为 2016/ + 增量数字的字符串。我使用这段代码生成了这个主键:

SqlCommand cmdRow = new SqlCommand("select TOP(1) CodeBonLivraison from BonLivraison ORDER BY 1 DESC", con);

string LastCode = (string)cmdRow.ExecuteScalar();
string getID = LastCode.Split('/')[1];
int getIntID = Convert.ToInt32(getID);

numeroBonReceptionTextBox1.Text = DateTime.Now.Year.ToString() + "/" + (getIntID + 1).ToString();

此代码正常生成主键 2016/1...2016/2...直到 2016/10 它重新生成 2016/10 这是主键违规。

那么如何修改此代码以获取最后插入的密钥并获取 2016/11...2016/12...

将您的查询更改为

select TOP(1) CodeBonLivraison 
from   BonLivraison 
ORDER BY convert(int,
                 right(CodeBonLivraison, charindex('/', reverse(CodeBonLivraison )) - 1)
                 ) DESC

尝试这样的事情:

select TOP(1) CodeBonLivraison 
from BonLivraison 
ORDER BY CAST(SUBSTRING(CodeBonLivraison, 6, LEN(CodeBonLivraison ) - 5) as int) DESC