C# ListView 不使用存储过程和参数显示数据库结果

C# ListView is not displaying database results using stored procedure and parameter

当存储过程 运行 带有参数时,我的列表视图不显示结果。列表视图应显示所选帐户的 t运行 操作。

当 运行 使用不同的存储过程且没有参数时,我使用的代码完美运行。我检查了数据库上的存储过程,它按应有的方式工作,显示了所选帐户的 t运行sactions。

            transactionListView.Items.Clear();
            SqlConnection sql = new SqlConnection(@"Server=.\DANIELSQL;Database=Accounts;Trusted_Connection=True;");
            sql.Open();

            SqlCommand com = new SqlCommand("spTransactionTable_GetTransactionDetails_ByAccount", sql);
            com.CommandType = CommandType.StoredProcedure;
            com.Parameters.AddWithValue("@AccountName", accountNameChoice.SelectedItem.ToString());

            SqlDataAdapter da = new SqlDataAdapter(com);
            DataTable dt = new DataTable();
            da.Fill(dt);

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                DataRow dr = dt.Rows[i];

                if (dr.RowState != DataRowState.Deleted)
                {
                    ListViewItem lvi = new ListViewItem(dr["TransactionID"].ToString());
                    lvi.SubItems.Add(dr["AccountName"].ToString());
                    lvi.SubItems.Add(dr["TransactionAmount"].ToString());
                    lvi.SubItems.Add(dr["Category"].ToString());
                    lvi.SubItems.Add(dr["DateValue"].ToString());
                    lvi.SubItems.Add(dr["IncomeOrExpenditure"].ToString());

                    transactionListView.Items.Add(lvi);
                }
            }

            sql.Close();

当我运行无参数存储过程时,所有的记录都显示出来了。当我 运行 参数化存储过程时,什么都不显示。

我厌倦了在两个存储过程上从 SqlDataAdapter 开始放置断点。当它到达 for 循环时,在非参数化存储过程上它说它填充了 3,这是有多少 t运行sactions。在参数化存储过程上,它说它填充了 0.

尝试使用您在 SSMS 中的输入执行您的存储过程,并检查它是否返回任何结果。

如果accountNameChoice.SelectedItem.ToString()显示的是class的名字,你需要弄清楚class是什么,[=19=是哪个属性 ]代表账户名。

将值传递给存储过程时的示例:

((Account)accountNameChoice.SelectedItem).Name

如果您有一个 class 就是这种情况,例如:

public class Account
{
    public string Name { get; set; }
}