小弟想实现一个功能,获取一个ComboBox(comboQueryType )的Text内容作为查询时的字段名,一个TextBox(txtQueryContent)的TEXT属性作为该字段的查询条件——string strQueryContent = "Select * from table where " + comboQueryType .Text + "=" +"'" + txtQueryContent.Text + "'";关键是不知道怎么把这个结果在DataGridView控件上显示出来。
我试着写了这样的代码:DataTable tblContectQuery = new DataTable();
tblContectQuery.Load(oleReaderQueryResult);  //oleReaderQueryResult是个OleDbDataReader类型,保存了查询的结果(数据库用的是ACCESS)
dataGridContact.DataSource = tblContectQuery;但显示在DataGridView里的是条空数据,迷茫了。
小弟初学C#,数据库操作这块没什么思路,还望各位大侠们LEND ME A HAND 一下下

解决方案 »

  1.   

    string strQueryContent = "Select * from table where " + comboQueryType .Text + "=" +"'" + txtQueryContent.Text + "'";
    改为模糊查询吧
    string strQueryContent = "Select * from table where " + comboQueryType .Text.Trim() + " like " +"'%" + txtQueryContent.Text.Trim() + "%'";
      

  2.   

    数据查询出来后dataGridContact.DataSource = tblContectQuery;
    dataGridContact.DataMember = tblContectQuery.TableName;
    dataGridContact.DataBind();即可
      

  3.   

    dataGridContact.DataBind();这个有点问题。DataGridView没找到这样的方法,是不是指定完DATASOURCE和DATAMEMBER后,类似完成绑定的操作?
      

  4.   

    如果你的是web项目,应该有DataBind()方法的,需要dataGridContact.DataBind();如果是winform项目,就没有DataBind();也就不需要dataGridContact.DataBind()
      

  5.   

    恩,俺的那个是C/S的。我最想想问的是,我执行完了查询操作后,结果是放在一个OleDbDataReader的类型中,那我用什么方法把结果传递给tblContectQuery 这个表呢?
      

  6.   

    终于在睡觉前解决了这个问题:
    //封装了各种查询操作
    class AccessDB
    {
     //构造函数……
            //strQuery为SQL语句
            public DataTable QueryReturnTbl(string strQuery)
            {
                Adapter = new OleDbDataAdapter();
                tblQuery = new DataTable();
                /*Adapter获得查询结果*/
                Adapter.SelectCommand=new OleDbCommand (strQuery, conn);/*conn:构造函数中初始化的ACCESS连接变量*/
                /*填到表中*/
                Adapter.Fill(tblQuery);
                return tblQuery;
             }
    //……
    }private void btnOK_Click(object sender, EventArgs e)
    {
               //省略保护            string strQueryContent = "Select * from table where " + comboQueryType.Text.Trim() + " like " + "'%" + txtQueryContent.Text.Trim() + "%'";
                AccessDB ContentQuery = new AccessDB(conn);
                DataTable tblQuery = ContentQuery.QueryReturnTbl(strQueryContent);
                
                dataGridContact.DataSource = tblQuery;
                dataGridContact.DataMember = tblQuery.TableName;
                
                 //……
    }我是胡乱写的,这样写可以正确输出结果,不过我很想知道“按套路出牌”,从SQL语句获取某个控件TEXT属性开始,到最后在DATAGRIDVIEW输出,用具体的语言实现起来,应该是个怎样的顺序?
      

  7.   

    DataSet ds=new DateSet();
    ds=  //这里梆定你从数据库里返回的DS   
    //下面一句话就可以搞定whichDataGridView.DataSource = ds.Tables[0].DefaultView;