string sql1="select * from @para2 where @para1='@para3'";
          OleDbCommand dbcmd=new OleDbCommand(sql1,dbconn);          OleDbParameter p1 =new OleDbParameter("@para1",OleDbType.VarChar,50);
          p1.Value=bl1;
          dbcmd.Parameters.Add(p1);          OleDbParameter p2 =new OleDbParameter("@para2",OleDbType.VarChar,50);
          p2.Value=bl2;
          dbcmd.Parameters.Add(p2);          OleDbParameter p3 =new OleDbParameter("@para3",OleDbType.VarChar,50);
          p2.Value=TextBox1.Text;
          dbcmd.Parameters.Add(p3);
执行时会说我的查询语句有问题,不知道我哪儿是不是搞错了?如果我不使用三个参数直接用字符代替就是正常的,其中的bl1,bl2,TextBox1.Text都定义了的

解决方案 »

  1.   

    string sql1="select * from @para2 where @para1='@para3'";当然有问题啦,改为:string sql1="select * from @para2 where @para1=@para3";用参数传递字符串不需要''符号
      

  2.   

    bl1,bl2是定义的全局字符串变量,TextBox1.Text就不用说了吧
      

  3.   

    bl1是设置字段名,bl2是设置表名,TextBox1.Text是设置值
      

  4.   

    you can use parameters on table name or column name, also, OleDb's parameters are based on position
    string sql1= String.Format("select * from {0} where {1} = ?", bl2, bl1);
    OleDbCommand dbcmd=new OleDbCommand(sql1,dbconn);
    OleDbParameter p =new OleDbParameter("@para3",OleDbType.VarChar,50);
    p.Value=TextBox1.Text;
    dbcmd.Parameters.Add(p);
    ....
      

  5.   

    string sql1= String.Format("select * from {0} where {1} = ?", bl2, bl1);
    这个只是手工组成SQL字符串,跟string sql1= "select * from " + bl2 + " where " + bl1 + " = ?", 没什么两样,其中的"?"是为参数设置定位而已