我的存储过程返回一些东西,但sqlDataAdapter.Fill将数据表留空

时间:2011-04-01 09:15:11

标签: c# sql-server sqlcommand

我的应用程序停止了工作。我测试了我的存储过程,它确实返回3行(太大了,不能重新发布)。在Visual Studio的输出中,它后来说:

(1 row(s) affected)
(3 row(s) returned)
@RETURN_VALUE = 0
Finished running [dbo].[GetCaseDocumentFile].

为什么我不能将它放入名为dtResult的数据表中?命令sqlDataAdapter.Fill(dtResult)应该这样做。相反,我在调试模式下查看时会得到{}。

string connectionString = @"Data Source=34.56.55.251;Initial Catalog=DBXXX;User ID=xx;Password=XXXXXXXX;";
string queryString = "GetCaseDocumentFile";

using (SqlConnection connection = new SqlConnection(connectionString))
            {
    SqlCommand command = new SqlCommand(queryString, connection);
    command.CommandType = System.Data.CommandType.StoredProcedure;
    command.Parameters.AddWithValue("@key", 200012);

    connection.Open();

    // Works! Three lines are returned.
    SqlDataReader reader = command.ExecuteReader();
    try
    {
        while (reader.Read())
        {
            Console.WriteLine(String.Format("{0}, {1}",
                reader[0], reader[1]));
        }
    }
    finally
    {
        reader.Close();
    }

    // Does not work! dtResult remains empty. {}
    DataTable dtResult = new DataTable();
    SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(command);
    sqlDataAdapter.Fill(dtResult);

    DataTable result = dtResult;
}

更新

没关系。这实际上有效。这是我的测试代码以及​​我认为我的真实代码所做的事情。但我想我忽略了真实代码中的某些内容。

1 个答案:

答案 0 :(得分:2)

您是否在程序中没有计算? 设置NoCount On;