我想在.net中将做一个查询界面其中想通过下拉框对任意字段的值进行查询,如何做字段名的变量呀

解决方案 »

  1.   

    exec('select '+@name+' from table'),下拉框的值传给@name
      

  2.   

    简单的说,有两个办法,一个是通过Combobox来组织字符串。通过组织好的字符串去sql里执行。
    第二个是通过Combobox来决定参数,通过参数调用不同的字段。
    前者效率高。
      

  3.   

    楼主的意思应该是当作查询条件吧?
    SQL=" SELECT * FORM TABLENAME WHERE "+Combobox.selectVale+" =''"
    当作查询字段时:SQL=" SELECT "+Combobox.selectVale+" FORM TABKENAME"
      

  4.   

    lz的问题有两个办法可以解决
    1. string sql = "SELECT * FROM Table1 WHERE " + 你的字段名 + " 你的条件";//大于小于之类随便你
    2. 存储过程中(SQLServer语法)
       DECLARE @SQL VARCHAR(2000)
       SET @SQL = "SELECT * FROM Table1 WHERE "
       --假设你的存储过程有一个输入参数@Condition(这个就是查询条件,如 ColA LIKE 'AAA%'之类的)
       SET @SQL = @SQL + @Condition
       EXEC @SQL
      

  5.   

    我使用下面两条语句测试都不成功,一给@x赋值则查询到0条记录
    sqlstr="select * from P_TRADE where'"+DropDownList1.SelectedValue+ "'like '%'+@x+'%'";

    sqlstr="select * from P_TRADE where @y like '%'+@x+'%'";
    而用下面语句则一切正常
    sqlstr="select * from P_TRADE where cut_mode like '%'+@x+'%'";
    //cut_mode为其中的一个字段,测试过@y的值也为cut_modeSqlConn conn2 = new SqlConn();
    conn2.Open();
    SqlDataAdapter mycmd2=new SqlDataAdapter(sqlstr,conn2.connstr);
    DataSet ds2=new DataSet();
    mycmd2.SelectCommand.Parameters.Add("@x",SqlDbType.VarChar,50);
    //用TextBox1.Text存放字段的值
    mycmd2.SelectCommand.Parameters["@x"].Value=TextBox1.Text;
    mycmd2.SelectCommand.Parameters.Add("@y",System.Data.SqlDbType.NVarChar);
    //用DropDownList1.SelectedValue存放字段的名字
    mycmd2.SelectCommand.Parameters["@y"].Value=DropDownList1.SelectedValue;
    mycmd2.Fill(ds2);
    DataGrid1.DataSource=ds2;
    DataGrid1.DataBind();
    mycmd2.Dispose();
    conn2.Close();
    不知何故