日期:2014-05-17  浏览次数:20808 次

access条件查询问题,求大侠给予指点,谢谢
本帖最后由 nucjankk 于 2013-08-06 20:05:11 编辑

数据库中有四个字段,其中反应釜、温度值为数值类型,日期和时间为文本类型,
我想按反应釜数值 和日期查询,我的代码如下:

  private void kettleInquire()
        {
           strDate = this.dtpDate.Value.ToShortDateString();//获得日期datetimepicker
           intNum = int.Parse(cbxNum.Text);//获得反应釜数值
             string strSQL = "select * from tb_Data where 日期='" + strDate + "' and 反应釜='"+intNum+"'";
            DataSet ds = dataoperate.getDs(strSQL, "tb_Data");
            dataGridView1.DataSource = ds.Tables["tb_Data"];

        }

执行后,程序提示,数据类型不匹配。
数据库 access C#

------解决方案--------------------
你数据库中的日期为文本类型,但是你穿进去的值为datetime类型,在sql位置设置断点应该可以看到你的?strDate变量大概是"jun wed 8:30:36 2013/08/06"样子的。。所以当运行的时候类型不匹配。建议解决办法数据库改成date类型,或者将?strDate变量改成跟数据库日期存储一致的格式,然后转换成字符串进行查询。。
另外intNum = int.Parse(cbxNum.Text);如果前台没有验证,cbxNum控件中用户不小心输入了非数字进行查询,你的程序会报错
------解决方案--------------------

string strSQL = "select * from tb_Data where 日期=#'" + strdate+ "'# and 反应釜='"+intNum+"'";