C#SQL查询使用相同的查询返回的结果与Management Studio不同

时间:2019-05-22 09:45:15

标签: c# sql

我正在从应用程序执行的SQL查询返回的结果与SQL Management Studio不同,特别是丢失了整行数据。

我尝试使用单个WHERE子句从相关表中将查询方式简化为仅“ SELECT *”,这实现了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中进行调试,这是我仅看到单行的地方。

编辑: 根据要求,执行查询的全部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}");
}

0 个答案:

没有答案