我想获得最后一个选定的人ID。
error
但不幸的是它没有用。我已经尝试过获取int16,int32和int64。当我使用INSERT时,我可以使用以下选择获取ID:
string personID = "SELECT PersonID FROM TestDatabase.[dbo].[Persons] where name LIKE 'XYZ%'";
SqlCommand cmd = new SqlCommand(personID, con);
SqlDataReader reader = cmd.ExecuteReader();
var lastSelectedSingleClientPhoneId = reader.GetDecimal(0);
在下面插入命令:
SELECT SCOPE_IDENTITY();
答案 0 :(得分:0)
这应该返回以' XYZ'开头的所有人在人员数据库表中。
string personID = "SELECT PersonID FROM TestDatabase.[dbo].[Persons] where name LIKE 'XYZ%'";
using(var cmd = new SqlCommand(personID, con))
using (var reader = cmd.ExecuteReader())
{
while(reader.Read())
{
Console.WriteLine(reader.GetValue(0));
}
}
我感谢您一直在寻找一种类型来调用GetXXX
,但您可以轻松扩展此伪代码以确定合适的类型。
答案 1 :(得分:0)
您可以尝试将两个SQL语句组合为一个CommandText值,然后使用ExecuteScalar返回最后插入的ID
string insertPerson = "INSERT INTO TestDatabase.[dbo].[Persons] (firstName,secondName) VALUES (@firstName,@secondName); SELECT SCOPE_IDENTITY();";
SqlCommand cmd = new SqlCommand(insertPerson, con);
cmd.Parameters.AddWithValue("@firstName", txt_firstName.Text);
cmd.Parameters.AddWithValue("@secondName", txt_secondName.Text);
int personID = (int)cmd.ExecuteScalar();
/// ... convert integer value to a string or do something
您也可以尝试使用此SQL语句:
SELECT TOP 1 PersonID FROM Persons ORDER BY PersonID DESC;