/// <summary>
        /// 按照条件搜索客房
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_roomPrerequisite_Click(object sender, EventArgs e)
        {
            bool cBTel = cB_tel.Checked;
            bool cBADSL = cB_ADSL.Checked;
            bool cBToilet = cB_toilet.Checked;
            string tbxPrice = tbx_price.Text.Trim();
            dGV_roomCheck.DataSource = mybo.roomPrerequisite(cBTel,cBADSL,cBToilet,tbxPrice);
        }        /// <summary>
        /// 按照条件搜索客房的方法
        /// </summary>
        /// <param name="cBTel"></param>
        /// <param name="cBADSL"></param>
        /// <param name="cBToilet"></param>
        /// <param name="tbxPrice"></param>
        /// <returns></returns>
        internal object roomPrerequisite(bool cBTel, bool cBADSL, bool cBToilet, string tbxPrice)
        {
            return mydb.roomPrerequisite(cBTel,cBADSL,cBToilet,tbxPrice);
        }
        /// <summary>
        /// 调用数据库中符合条件的行
        /// </summary>
        /// <param name="cBTel"></param>
        /// <param name="cBADSL"></param>
        /// <param name="cBToilet"></param>
        /// <param name="tbxPrice"></param>
        /// <returns></returns>
        internal object roomPrerequisite(bool cBTel, bool cBADSL, bool cBToilet, string tbxPrice)
        {
            cmd.CommandText = "select * from roomInfo where haveTel = '" + cBTel + "',"+"haveADSL='" + cBADSL + "',"+"haveToilet='" + cBToilet + "',"+"rent<='"+tbxPrice+"'";
            OleDbDataAdapter da = new OleDbDataAdapter();
            da.SelectCommand = cmd;
            DataTable dt = new DataTable();
            da.Fill(dt);//在这提示
            return dt;
        }mybo 是实例化一个业务逻辑 
mydb 是实例化一个数据访问 
我用了三层架构:界面层、业务逻辑层、数据访问层

解决方案 »

  1.   

     cmd.CommandText = "select * from roomInfo where haveTel = '" + cBTel + "',"+"haveADSL='" + cBADSL + "',"+"haveToilet='" + cBToilet + "',"+"rent<='"+tbxPrice+"'";sql语句的 条件不要用"," ,用and 连接起来!
      

  2.   

    使用OleDbParameter
    可解决楼主问题~~~
      

  3.   

    cmd.CommandText = "select * from roomInfo where haveTel = '" + cBTel + "',"+"haveADSL='" + cBADSL + "',"+"haveToilet='" + cBToilet + "',"+"rent<='"+tbxPrice+"'";
    ==
    cmd.CommandText = "select * from roomInfo where haveTel = '" + cBTel + "' and "+"haveADSL='" + cBADSL + "' and "+"haveToilet='" + cBToilet + "' and "+"rent<='"+tbxPrice+"'";
      

  4.   

    不过这种拼接字符串的方式很不好,最好是改为
    cmd.CommandText = "select * from roomInfo where haveTel = '" + cBTel + "',"+"haveADSL='" + cBADSL + "',"+"haveToilet='" + cBToilet + "',"+"rent <='"+tbxPrice+"'"; 
    ==
    cmd.CommandText = "select * from roomInfo where haveTel = @haveTel and haveADSL = @haveADSL and haveToilet = @haveToilet and rent <= @rent"; 
    cmd.Parameters.AddWithValue("@haveTel", cBTel);
    cmd.Parameters.AddWithValue("@haveADSL", cBADSL);
    cmd.Parameters.AddWithValue("@haveToilet", cBToilet);
    cmd.Parameters.AddWithValue("@rent", tbxPrice);
      

  5.   

    不是这个问题  是   da.Fill(dt);
    这里错误!!!
      

  6.   

    感谢您,但错误不在这!!
    调试时在da.Fill(dt);出错
      

  7.   


    我按您的意思改了 又出现da.Fill(dt);错误