我正在从应用程序执行的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}");
}