在 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
我有一个 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