将存储过程的结果保存在后台代码中

本文关键字:后台 代码 存在 保存 存储过程 结果 | 更新日期: 2023-09-27 17:50:26

我想从SQL Server的项目表中检索一个项目id。

我创建了一个这样的存储过程:
create proc spFindProjectID
   (@customerid int)
as
begin 
    select Project.pID
    from Project
    where Project.cID=@customerid
end

现在在c#中,我像这样执行这个过程:

 public int findid(int id)
 {
        con = connect("igroup9_test1ConnectionString");
        using (SqlCommand sqlComm = new SqlCommand("[spFindProjectID]", con))
        {
            if (con.State != ConnectionState.Open)
            {
                con.Open();
            }
            try
            {
                sqlComm.CommandType = CommandType.StoredProcedure;
                sqlComm.Parameters.AddWithValue("@customerid", id);
                sqlComm.CommandTimeout = 600;
                sqlComm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw (ex);
            }
            return
        }
    }

我想保存过程的结果并返回它。

我该怎么做?

将存储过程的结果保存在后台代码中

让我们看一下ExecuteNonQuery:的文档

对于UPDATE、INSERT和DELETE语句,返回值是受. ...命令影响的行数对于所有其他类型的语句,返回值为-1

您正在调用一个存储过程,它不是列出的3条语句中的任何一条。

我猜你的

select Project.pID
from Project
where Project.cID=@customerid

查询只返回一个单元格,您可以使用SqlCommand.ExecuteScalar方法返回第一行的第一列作为object

例如

,

sqlComm.CommandType = CommandType.StoredProcedure;
sqlComm.Parameters.AddWithValue("@customerid", id);
int value = (int)sqlComm.ExecuteScalar();
return value;