存储过程不返回SqlDataAdapter

时间:2016-06-24 16:34:05

标签: c# sql-server asp.net-mvc sqldataadapter

我是使用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

并且由于我遇到intvarchar转换错误,它无效。

2 个答案:

答案 0 :(得分:1)

我认为您尝试使用SqlParameter添加SqlCommand,如下所示:

SqlCommand cmd = new SqlCommand();
cmd.parameter.addwithvalue(@DataDate,DateTime.Now);

答案 1 :(得分:0)

原因是因为set nocount on。我把它添加到我的sp中并且它有效。谢谢大家的澄清。