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

时间:2014-03-15 10:00:21

标签: c# asp.net sql-server stored-procedures save

我想从SQL Server中的项目表中检索项目ID。

我创建了一个这样的存储过程:

create proc spFindProjectID
   (@customerid int)
as
begin 
    select Project.pID
    from Project
    where Project.cID=@customerid
end

现在在我的C#中我执行了这样的proc:

 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
        }
    }

我想保存程序中的结果并将其返回。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

让我们看一下ExecuteNonQuery文档

  

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

您正在调用存储过程,该过程不是列出的3个语句。

我假设你的

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

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

例如;

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