存储过程 returns 没有包含 SqlDataAdapter 的行
Stored procedure returns no rows with SqlDataAdapter
我是 SqlDataAdpter
的新手,我正在尝试执行存储过程。存储过程成功执行但未返回任何行。我已经使用 SQL Server Profiler 来监视调用并且它成功运行(我可以从 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
时,它总是 returns 0 行。
请帮助我做错了什么?
注意: 我也试过(但不喜欢)作为 SQL 命令执行:
EXEC usp_mySP @DataDate, @IDList
它也没有用,因为我遇到了 int
到 varchar
的转换错误。
我认为您尝试使用 SqlCommand
添加 SqlParameter
,如下所示:
SqlCommand cmd = new SqlCommand();
cmd.parameter.addwithvalue(@DataDate,DateTime.Now);
原来是因为set nocount on
。我将它添加到我的 sp 并且它有效。谢谢大家解惑
我是 SqlDataAdpter
的新手,我正在尝试执行存储过程。存储过程成功执行但未返回任何行。我已经使用 SQL Server Profiler 来监视调用并且它成功运行(我可以从 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
时,它总是 returns 0 行。
请帮助我做错了什么?
注意: 我也试过(但不喜欢)作为 SQL 命令执行:
EXEC usp_mySP @DataDate, @IDList
它也没有用,因为我遇到了 int
到 varchar
的转换错误。
我认为您尝试使用 SqlCommand
添加 SqlParameter
,如下所示:
SqlCommand cmd = new SqlCommand();
cmd.parameter.addwithvalue(@DataDate,DateTime.Now);
原来是因为set nocount on
。我将它添加到我的 sp 并且它有效。谢谢大家解惑