C # SQL Query возвращает результаты, отличные от Management Studio, используя тот же запрос - PullRequest
1 голос
/ 22 мая 2019

Запрос 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}");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...