不要用存储过程,要用参数传递的方式,如果解决这个sql问题?
这里有个问题啊:
“SELECT * FROM A WHERE ID=@ID”
这样的语句可以通过参数来把ID传进去,如下:
parameter = new SqlParameter("@ID", SqlDbType.UniqueIdentifier);
parameter.Value = Id;那么现在我的表名是可变的,并不是固定的,如下sql
“SELECT * FROM @TableName WHERE ID='121356-465454-5646456546-5454'”
这个时候我用这样的参数传递,没有用,出错!
parameter = new SqlParameter("@TableName ", SqlDbType.NVarChar);
parameter.Value = "A";那么此时我要怎么解决这个问题??当然类似的还有这样的sql:“SELECT  Top @Num * FROM AWHERE ”要怎么解决这个问题??

解决方案 »

  1.   

    郁闷,ado.net不允许这样操作的
    SqlParameter 只能是条件参数你可以这样解决
    string _tableName=....;
    SqlCommand.commandText=string.Format("select * from {0}",_tableName);
      

  2.   

    string tableName = "a";
    string num = 10;
    string strSQL = "SELECT Top " + num.ToString() + " * FROM " + tableName.Replace("'", "''") + " WHERE ID=@ID";
      

  3.   

    先把SQL语句组成字符串,组合完以后再去进行查询
      

  4.   

    最后我自己用了   这样的代码
    先自己替换,在给参数替换"select top @@Num * from a" 
    自己先  querySql=querySql.replaec("@@Num","10")