我的任務是從數據庫檢索數據,用戶可以選擇開始時間。例如,如果用戶從13:00開始選擇並且當時沒有結果,那麼讀數應該在開始前一分鐘(12:59)開始,如果在開始前兩分鐘(12:58)仍然沒有結果,直到找到結果爲止。這是我到目前爲止已經嘗試沒有成功:C#從數據庫檢索數據匹配用戶的開始時間
string str1 = dtFrom.ToString("yyyy-MM-dd HH:mm");
string str2 = dtTo.ToString("yyyy-MM-dd HH:mm");
bool b = true;
while (b)
{
string SQLCommand = "Select * From tbl Where Time Between @from AND @to AND Id = @id ";
using (SQLiteConnection con = new SQLiteConnection(connectionString))
{
con.Open();
SQLiteCommand cmd = new SQLiteCommand(SQLCommand, con);
cmd.Parameters.AddWithValue("@from", str1);
cmd.Parameters.AddWithValue("@to", str2);
cmd.Parameters.AddWithValue("@id", id);
using (SQLiteDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
DateTime time = DateTime.Parse(reader[0].ToString());
double value = double.Parse(reader[1].ToString());
if (time.Minute < dtFrom.Minute)
{
// Add values..
b = false;
}
else
{
dtFrom = dtFrom.AddMinutes(-1);
str1 = dtFrom.ToString();
b = true;
break;
}
}
}
}
}
return list;
難道你不能只按順序排序記錄下第一個記錄嗎? – paul 2014-10-06 11:48:38
我正在執行插值,如果沒有這樣的記錄,應該先讀取讀數。 – Doro 2014-10-06 11:50:20
我不得不同意保羅。你爲什麼不把你的查詢改爲'「選擇top 1 *從tbl Where Time <= @to AND Id = @id」'。這對我來說沒有意義,爲什麼你會限制搜索的起點...... – 2014-10-06 12:23:22