У меня есть C# 4.0 WinForms App, использующее SQL База данных Server 2012.
В одной из моих форм я выбираю диапазон дат из MonthCalendar. В запросе, использующем SqlDataAdapter, запрос должен возвращать 4-имен людей из таблицы.
После заполнения DataTable "for" l oop успешно вытягивает имя. На следующей итерации он также извлекает имя второго человека из таблицы. Однако на 3-й итерации он снова извлекает имя 2-го лица и не получает оставшиеся 2-имена.
Используя SSMS, я вижу все 4-имен людей, которых я запрашиваю. Если я использую запрос ниже в SSMS, я снова получаю все 4 имени. У кого-нибудь есть идея, почему приведенный ниже код не может вернуть все 4 имени, но возвращает предыдущее имя?
Вот код, который я использую для запроса к SQL базе данных сервера.
private string ReturnPerson(string dStart, string dEnd)
{
string myPerson = "";
try
{
using (SqlConnection conn = new SqlConnection(@"..."))
{
conn.Open();
using (SqlDataAdapter adap = new SqlDataAdapter("SELECT person, scheduledDate FROM Assignments WHERE scheduledDate BETWEEN @start AND @end ORDER BY scheduledDate ASC", conn))
{
adap.SelectCommand.Parameters.Add("@start", SqlDbType.NVarChar).Value = dStart;
adap.SelectCommand.Parameters.Add("@end", SqlDbType.NVarChar).Value = dEnd;
using (DataTable dt = new DataTable())
{
adap.Fill(dt);
for (int i = 0; i < dt.Rows.Count - 1; i++)
{
DataRow row = dt.Rows[i];
DataRow nextRow = dt.Rows[i + 1];
if (personRowCounter == 0)//rowCounter declared globaly
{
myPerson = row.Field<string>("person").ToString();
personRowCounter++;
return myPerson;
}
else if (personRowCounter > 0)
{
myPerson = nextRow.Field<string>("person").ToString();
personRowCounter++;
return myPerson;
}
}
}
}
}
}
catch (SqlException ex) { MessageBox.Show(ex.Message); }
catch (System.Exception ex) { MessageBox.Show(ex.Message); }
return myPerson;
}