我正在使用SQL Server Compact数据库在C#应用程序中存储通过串行端口收集的传感器数据。我使用以下查询来检索数据,并且工作正常:
public List<Record> GetData(DateTime startDatetime, DateTime endDatetime, string sensor)
{
dataTable = new DataTable();
using (connection = new SqlCeConnection(connectionString))
{
connection.Open();
dataAdapter = new SqlCeDataAdapter("SELECT * FROM data WHERE sensor = @sensor AND dt BETWEEN @startDatetime AND @endDatetime", connection);
dataAdapter.SelectCommand.Parameters.AddWithValue("@startDatetime", startDatetime);
dataAdapter.SelectCommand.Parameters.AddWithValue("@endDatetime", endDatetime);
dataAdapter.SelectCommand.Parameters.AddWithValue("@sensor", sensor);
dataAdapter.Fill(dataTable);
connection.Close();
}
List<Record> records = new List<Record>();
foreach (DataRow row in dataTable.Rows)
{
records.Add(new Record
{
Id = (int)row["Id"],
dt = (DateTime)row["dt"],
sensor = row["sensor"].ToString(),
port = (int)row["port"],
measuredValue = row["measuredValue"].ToString(),
value = (double)row["value"],
unit = row["unit"].ToString()
});
}
return records;
}
问题在于,如果我删除数据库中的所有记录,并等待数据库中填充一些记录,查询将不会返回任何结果!
这是删除查询:
public void DeleteAllData()
{
using (connection = new SqlCeConnection(connectionString))
{
connection.Open();
using (SqlCeCommand command = new SqlCeCommand("DELETE FROM data", connection))
{
command.ExecuteNonQuery();
}
connection.Close();
}
}
仅当我重新启动应用程序时,它才有效。
有人知道为什么使用删除查询后我无法检索任何记录吗?我确认数据库确实包含记录。