从C#WPF中的select查询中获取最后一个ID

时间:2015-12-14 23:15:53

标签: c# sql

我想获得最后一个选定的人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();

2 个答案:

答案 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;