Как получить список из базы данных SQL Server с хранимой процедурой и добавить в ComboBox - PullRequest
0 голосов
/ 06 января 2019

Мне нужно получить список из базы данных SQL Server с хранимой процедурой и добавить все в выпадающий список.

Когда я выбираю любой элемент из cBoxWhatLaws - приложение соединяется с базой данных, получает соответствующие статьи и добавляет их в cBoxArticleList.

Helper.WhatLaws возвращает tableName ..

Хранимая процедура и база данных в порядке, потому что все работают с Java-приложением. Добавление в базу данных из этого приложения тоже работает.

//Page.cs
private void cBoxWhatLaws_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (cBoxWhatLaws.SelectedIndex != 0)
    {
        tableName = Helper.WhatLaws(cBoxWhatLaws.SelectedIndex);

        cBoxArticleList.Items.Clear();
        cBoxArticleList.Items.Add("Choose article:");

        if (MyDatabaseHelper.seeArtList(tableName).Count == 1)
        {
            MessageBox.Show("Article list is empty.", "Empty list", MessageBoxButton.OK, MessageBoxImage.Information);
        }
        else
        {
            for (int i = 0; i < MyDatabaseHelper.seeArtList(tableName).Count; i++)
            {
                cBoxArticleList.IsEnabled = true;
                cBoxArticleList.Items.Add(MyDatabaseHelper.seeArtList(tableName).ElementAt(i).ToString());
            }
        }
    }
}

// MyDatabaseHelper
static SqlConnection sqlCon = new SqlConnection("Data Source=.; Initial Catalog=PrzepisyGry; Integrated Security=True;");

public static List<string> seeArtList(string przepisyGry)
{
    var artList = new List<string>();

    try
    {
        SqlCommand sqlCmd = new SqlCommand("getArticleList", sqlCon);
        sqlCmd.CommandType = CommandType.StoredProcedure;
        sqlCmd.Parameters.Add(new SqlParameter("@nazwaTabeli", przepisyGry));

        sqlCon.Open();
        IDataReader result = sqlCmd.ExecuteReader();

        int i = 0;

        while (result.Read())
        {
            artList.Add(result[i].ToString());
            i++;
        }
    }
    catch
    {
        MessageBox.Show("Error with get list", "Err", MessageBoxButton.OK, MessageBoxImage.Error);
    }

    return artList;
}

В приложении возникла проблема с возвратом artList, и отображается ошибка:

Ошибка при получении списка> Индекс вне диапазона

1 Ответ

0 голосов
/ 06 января 2019

У меня есть ответ. В MyDatabaseHelper.cs:

while (result.Read())
{
artList.Add(result[0].ToString()); // i -> 0 (for first column)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...