我是使用SqlDataAdpter
的新手,我正在尝试执行存储过程。存储过程成功执行但不返回任何行。我已经使用SQL Server Profiler监视调用并且它成功运行(我可以从分析器复制并执行查询而无需修改它并获得结果)。
我有以下内容:
public ActionResult Index()
{
SqlConnection conn = null;
DataSet results = null;
try
{
string connectionString = // ... my connection
conn = new SqlConnection(connectionString );
string query = @"usp_mySP";
conn.Open();
SqlDataAdapter sqlAdpt = new SqlDataAdapter(query, conn);
sqlAdpt.SelectCommand.CommandType = CommandType.StoredProcedure;
var dataDate = new SqlParameter { ParameterName = "@DataDate", Value = DateTime.Now };
var idList = new SqlParameter { ParameterName = "@IDList", Value = "1231,2324,0833" };
sqlAdpt.SelectCommand.Parameters.Add(dataDate);
sqlAdpt.SelectCommand.Parameters.Add(idList);
results = new DataSet();
sqlAdpt.Fill(results);
sqlAdpt.Dispose();
}
catch (SqlException e)
{
throw new Exception("Exception:" + e.Message);
}
finally
{
if (conn != null)
conn.Close();
}
return View(results);
}
当我通过调试器检查DataSet
时,它总是返回0行。
请帮助我做错了什么?
注意:我也尝试过(但不喜欢)作为SQL命令执行:
EXEC usp_mySP @DataDate, @IDList
并且由于我遇到int
到varchar
转换错误,它无效。
答案 0 :(得分:1)
我认为您尝试使用SqlParameter
添加SqlCommand
,如下所示:
SqlCommand cmd = new SqlCommand();
cmd.parameter.addwithvalue(@DataDate,DateTime.Now);
答案 1 :(得分:0)
原因是因为set nocount on
。我把它添加到我的sp中并且它有效。谢谢大家的澄清。