Запрос SQL
, который я выполняю из своего приложения, возвращает результаты, отличные от SQL Management Studio, в частности отсутствуют целые строки данных.
Я попытался сократить запрос до "SELECT *
" из соответствующей таблицы с помощью одного предложения WHERE, это дало тот же результат, что версия C#
каждый раз пропускала одну и ту же строку.
Урезанный SQL
запрос (который все еще имеет проблему) выглядит следующим образом
SELECT Token, Last_update, repeatno, Maxrepeatno, Dispwindowstart
FROM v_eps_prescriptions
WHERE Token='F69F4D-C82043-70379I'
C#
версия
SqlCommand command = new SqlCommand(
$@"SELECT Token, Last_update, messages, repeatno, Maxrepeatno
FROM v_eps_prescriptions
WHERE Token='{UUID}'",
conn);
Версия SQL
для этого запроса вернет 2 строки, C#
вернет только 1 строку.
Я помещал данные в dataGridView для отладки, где я вижу только одну строку.
Edit:
По запросу полный кусок C #, который выполняет запрос и что выводит в сетку данных (которая является временной для отладки)
try
{
conn.ConnectionString = $"Data Source=[source];Initial Catalog=[Cat];Integrated Security=True";
conn.Open();
foreach (string UUID in ValidUUIDList)
{
try
{
DateTime dt = DateTime.Now.AddDays(1);
DateTime dtpast = dt.AddMonths(-6);
SqlCommand command = new SqlCommand(string.Format($@"SELECT Token, Last_update, messages, repeatno, Maxrepeatno
FROM [Table]
WHERE Token='{UUID}'
AND Dispwindowstart
BETWEEN '{dtpast.ToString("yyyy - MM - dd")} 00:00:00.000'
AND '{dt.ToString("yyyy-MM-dd")} 00:00:00.000'
OR Token='{UUID}'
AND Dispwindowstart IS NULL"),
conn);
using (SqlDataReader dataReader = command.ExecuteReader())
{
if (dataReader.Read())
{
DataTable dataTable = new DataTable();
dataTable.Load(dataReader);
dataGridView1.DataSource = dataTable;
}
}
}
catch (Exception err)
{
MessageBox.Show($"An error occured while processing UUID {UUID}. \n\n{err.Message}");
}
}
}
catch (Exception err)
{
MessageBox.Show($"An error occured while connecting to the Nexphase database. \n\n{err.Message}");
}