2017-03-21 20 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); 
相关问题