2017-03-21 24 views
0

從數據庫中選擇數據並且條件爲日期時,我收到此消息,指出數據類型不匹配標準表達。當從數據庫中選擇數據並且條件爲日期時,我收到此消息,指出條件表達式中的數據類型不匹配

這是我的代碼。

public DataTable loadhooodor() 
{ 
    DataTable hooodorDt = new DataTable(); 
    OleDbDataAdapter hooodorDa; 
    hooodorDt.Clear(); 
    DateTime today = new DateTime(); 
    today = DateTime.Today; 
    hooodorDa = new OleDbDataAdapter("select * from HoodoorEnseraf where heDate='"+ today+ "'", connection); 
    hooodorDa.Fill(hooodorDt); 
    return hooodorDt; 
} 

private void dataGridRefresh() 
{ 
    dataGridView1.DataSource = null; 
    dataGridView1.Update(); 
    dataGridView1.Refresh(); 
    dataGridView1.DataSource = loadhooodor(); 
} 

我收到此消息。

enter image description here

我的訪問數據表,

enter image description here

+2

我建議使用一個參數的日期,而不是格式化的查詢,以便它會妥善處理的格式爲您服務。 – juharr

回答

0

當你引用一個日期在Access中你必須把#周圍。 This link gives more details

您還需要確保您的日期格式正確。您可以使用ToString

所以,你的代碼就變成了:

hooodorDa = new OleDbDataAdapter("select * from HoodoorEnseraf where heDate=#"+ today.ToString("yyyy/MM/dd")+ "#", connection); 
+0

感謝它的工作 –

0

檢查你的系統的日期格式&日期的日期格式您發送英寸

+0

相同的mm/dd/yyyy –

1

這就是一個沒有使用參數化查詢的問題。試試這個

hooodorDa = new OleDbDataAdapter("select * from HoodoorEnseraf where [email protected]", connection); 
hooodorDa.SelectCommand.Parameters.Add("@today", 
       System.Data.SqlDbType.DateTime); 
hooodorDa.SelectCommand.Parameters["@today"].Value = today; 
hooodorDa.Fill(hooodorDt); 
相關問題