C # ListView не отображает результаты базы данных, используя хранимую процедуру и параметр - PullRequest
0 голосов
/ 08 мая 2019

Мой список не отображает результаты, когда хранимая процедура запускается с параметром.Список должен отображать транзакции для выбранной учетной записи.

Код, который я использую, отлично работает, когда запускается с другой хранимой процедурой и без параметров.Я проверил хранимую процедуру в базе данных, и она работает так, как должен, отображая транзакции для выбранной учетной записи.

            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, то есть количеством транзакций.На параметризованной хранимой процедуре написано, что она заполнена 0.

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

Если accountNameChoice.SelectedItem.ToString() отображает имя класса, вам необходимо выяснить, что это за класс, и какое свойство этого класса представляет имя учетной записи.

Пример того, как это может выглядетькогда вы передаете значение хранимой процедуре:

((Account)accountNameChoice.SelectedItem).Name

Это было бы так, если бы у вас был такой класс, как:

public class Account
{
    public string Name { get; set; }
}
0 голосов
/ 08 мая 2019

Попробуйте выполнить хранимую процедуру с помощью ввода в SSMS и проверьте, возвращает ли он какие-либо результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...