Мне нужно получить список из базы данных 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
, и отображается ошибка:
Ошибка при получении списка> Индекс вне диапазона