c# - 使用 C# 在 SQL Server 中执行插入命令并返回插入的 Id

标签 c# sql-server winforms stored-procedures

我正在使用 C# 将一些值插入到 SQL Server 表中。实际上我想插入值并返回最后插入记录的“ID”。我使用以下代码:

string name = txt_name.Text.Trim();
string gender = Gender.Text.Trim();
string citizen = Citizen.Text.Trim();
int IdNo = Convert.ToInt32(idnumber.Text);

BUSSINESSACCESS.SENDMESSAGES send = new BUSSINESSACCESS.SENDMESSAGES();
DataSet dt = send.insertvoucher(name, gender, citizen, IdNo);

业务层

public DataSet insertvoucher(string name, string gender, string citizen, int IdNo)
{
    SqlParameter[] par = {
                             new SqlParameter("@Name", name),    
                             new SqlParameter("@Citizen", citizen),
                             new SqlParameter("@Emiratesidno", IdNo),
                             new SqlParameter("@gender", gender),
                         };

    var rowCount = SHJCSQLHELPER.ExecuteScalar(CONNECTIONSTRING, CommandType.StoredProcedure, "[INSERTVOUCHER]", par);

    return rowCount;
    // return SHJCSQLHELPER.ExecuteDataset(CONNECTIONSTRING, CommandType.StoredProcedure, "[INSERTVOUCHER]", par);
    //string mn = "";
}

存储过程

-- Insert statements for procedure here
Insert into Usertable(Name, Citizen, Emiratesidno, gender) 
values (@Name, @Citizen, @Emiratesidno, @gender)

SELECT scope_identity() AS int

我正在获取变量 rowcount 中的值,但我无法返回变量 rowcount,因为它在说

Cannot implicitly convert type 'object' to 'system.data.dataset'

最佳答案

  1. 您没有转换,您正在将列名称别名为 int,

    使用:SELECT CAST(scope_identity() AS int)

  2. rowCount 是装箱整数。更改返回语句和返回类型。示例:

return (int)rowCount;

这将是您需要的 ID。

引用:SqlCommand.ExecuteScalar MSDN

关于c# - 使用 C# 在 SQL Server 中执行插入命令并返回插入的 Id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43454323/

相关文章:

c# - 查找不适用于因 pragma 而未构建的代码的用法

c# - 从 C DLL 调用 C# 回调函数时崩溃

mysql - select 语句返回一部分结果

c# - 使 btn_Click 事件静态化

c# - 如何在 Windows 窗体应用程序中以古吉拉特语 native 数字显示数字?

c# - 我如何查看我的表单当前是否位于其他表单之上?

c# - 如何获取 DevExpress xtragrid 的所有可见行

c# - WPF 延迟绑定(bind)无法正常工作

c# - Dapper 参数化查询导致问题的字符串值?

sql - DELETE 逻辑不在嵌套查询中时性能最快