我正在使用MS Access數據庫。我想獲得兩個日期之間的第一個和最後一個記錄。在查詢表達式「Datum_k使用BETWEEN運算符的SQL查詢會導致「查詢表達式中的語法錯誤」
語法錯誤的數量之間2017年4月3日:可是我用
BETWEEN
操作時出現錯誤。和2012年3月4日。'。
我的代碼:
private void GetPrviZadnjiBrojRacuna()
{
OleDbCommand commandOD = new OleDbCommand("SELECT Dokument FROM DnevniPromet WHERE (Datum_k BETWEEN " + datumOd + " AND " + datumDo + ") ORDER BY [Datum_k] ASC", dataModel.CS);
OleDbCommand commandDO = new OleDbCommand("SELECT Dokument FROM DnevniPromet WHERE [Datum_k] >= " + datumOd + " AND [Datum_k] <= " + datumDo + " ORDER BY [Datum_k] DESC", dataModel.CS);
try
{
dataModel.DT.Clear();
OleDbDataAdapter ODbDA = new OleDbDataAdapter(commandOD);
if (!dataModel.CS.State.Equals(ConnectionState.Open))
{
dataModel.CS.Open();
}
// GET OD
ODbDA.Fill(dataModel.DT);
odRacuna = dataModel.DT.Rows[0].ToString();
// GET DO
ODbDA.SelectCommand = commandDO;
dataModel.DT.Clear();
ODbDA.Fill(dataModel.DT);
doRacuna = dataModel.DT.Rows[0].ToString();
dataModel.CS.Close();
dataModel.DataLoaded = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
首先,你應該參數化查詢中,不要使用字符串插值。但是你錯過了日期變量值的'''單引號。 –
nononononono!決不;決不;從不 - 不會將輸入連接到SQL。決不。但是:是的,這不是有效的SQL。我*會*說「需要引號」,但我有一個可怕的猜疑,你會添加它們;它*實際*需要的是:*參數*。除非你告訴我們提供者在這裏,我們不能告訴你需要的確切語法;因爲你似乎在使用OleDb,我們無法推斷任何東西。你能告訴我們實際的服務器在這裏嗎?它是SQL Server嗎?甲骨文? ... 要麼? –
嗯不是OleDb的自我explanitory笑它實際上是Access數據庫 – ChenChi