Использование DataTables из базы данных для заполнения программы при запуске без получения сообщений System.IndexOutOfRange
Привет всем и СПАСИБО В ПРЕДЕЛАХ!! за любую помощь я абсолютный новичок в программировании и программировании (4-5 месяцев)
Я использую Visual Studio 2012 и кодирования в C#
Я делаю приложение Windows Form, которое подключается к базе данных в SQL Server Management Studio
в основном у меня есть два поля со списком, которые должны быть заполнены данными из БД при запуске.
Я создал метод для заполнения полей со списком, и программа работает на 100%, при запуске ящики заполняются без пропущенных данных, все строки отображаются в полях со списком, и все делает именно то, что должно, и когда это должно сделай это...
ТЕМ НЕ МЕНИЕ!
каждый раз, когда я запускаю свою программу, я получаю это сообщение 5 раз (так как код, который генерирует сообщение, используется 5 раз)
System.IndexOutOfRangeException:There is no row at position 0
at System.Data.RBTree1.GetNodeByIndex(Int32 userIndex)
at System.Data.DataRowCollection.get_Item(Int32 index)
ДО фактической программы запускается и работает правильно.??? (это сводит меня с ума!!) вот весь мой соответствующий код
код ниже взят из моей реальной формы, как вы можете видеть, я использую update_combobox(); в разделе initalizeComponent, чтобы получить
это заполнить при запуске
namespace DB_Program
{
public partial class Form1 : Form
{
DataClass dc = new DataClass();
public Form1()
{
Thread t = new Thread(new ThreadStart(SplashScreen));
t.Start();
Thread.Sleep(5000);
InitializeComponent();
t.Abort();
update_ComboBox();
}
вот мой код из моей формы, который делает возможным
private void update_ComboBox()
{
DataSet pList = dc.PListPop();
cboBoxPList.DataSource = pList.Tables[0];
cboBoxPList.DisplayMember = "PName";
cboBoxPList.ValueMember = "PName";
DataSet devList = dl.DevListPop();
cboBoxDev.DataSource = devList.Tables[0];
cboBoxDev.DisplayMember = "LName";
cboBoxDev.ValueMember = "LName";
}
public String getDate(String pName)
{
String date = null;
DataTable dTable = new DataTable();
try
{
conn.Open();
SqlDataAdapter sda = new SqlDataAdapter("SelPro", conn);
sda.SelectCommand.CommandType = CommandType.StoredProcedure;
sda.SelectCommand.Parameters.Add("@PName", SqlDbType.VarChar).Value = pName;
sda.Fill(dTable);
date = dTable.Rows[0]["StartDate"].ToString();
}
catch (Exception GSD)
{
string a = GSD.StackTrace.ToString();
MessageBox.Show(GSD.ToString());
}
finally
{
if (conn != null)
{
conn.Close();
}
}
return date;
}
согласно моим сообщениям это строки, которые генерируют сообщения, первое сообщение относится к коду непосредственно над
date = dTable.Rows[0]["StartDate"].ToString();
date = dTable.Rows[0]["PlannedEndDate"].ToString();
FirstName = dTable.Rows[0]["FirstName"].ToString();
Spec = dTable.Rows[0]["Specialty"].ToString();
PID = (int) dTable.Rows[0]["PID"];
ПОЖАЛУЙСТА, ПОЖАЛУЙСТА, ПОЖАЛУЙСТА, кто-нибудь положит конец моему разочаровывающему кошмару! мне нужно, чтобы программа оставалась и работала точно так, как есть, все, что я пытаюсь сделать, - это все, что мне нужно, чтобы программа работала БЕЗ выдачи мне этих сообщений
еще раз спасибо!
1 ответ
Все хорошо, пожалуйста, проигнорируйте этот вопрос, так как мне удалось решить его самостоятельно!
в коде нет ошибки, проблема заключалась в настройках вкладки свойств, которые генерировали вещи, которые не должны