我想从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
}
}
我想保存程序中的结果并将其返回。
我该怎么做?
答案 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;