public string GetTopSQL(int topnumber,string fields,string tablename,string condition,string orderfield)
{
  //方式一:数组方式
  strArray = new string[10];
  strArray[0] = "Select Top ";
  strArray[1] = topnumber.ToString();
  strArray[2] = " ";
  strArray[3] = fields;
  strArray[4] = " From ";
  strArray[5] = tablename;
  strArray[6] = condition;
  strArray[7] = " Order By ";
  strArray[8] = orderfield;
  strArray[9] = " Desc";
  return string.Concat(strArray);
  //方式二:直接字符串连接写SQL语句方式
  //方式三:StringBuilder方式用append添加方式
}
还有更多的方式,希望大家能提供一个效率最好的方式。。谢谢了

解决方案 »

  1.   

    方式三:StringBuilder方式用append添加方式 吧。微软的例子也是使用这个的。
      

  2.   

    public static string GetTopAscSQL(int topnumber, string fields, string tablename, string condition, string orderfield)
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("SELECT TOP");
                sb.Append(" ");
                sb.Append(topnumber.ToString());
                sb.Append(" ");
                sb.Append(fields);
                sb.Append("FROM");
                sb.Append(" ");
                sb.Append(tablename);
                sb.Append(" ");
                sb.Append(condition);
                sb.Append(" ");
                sb.Append("ORDER BY");
                sb.Append(" ");
                sb.Append(orderfield);
                sb.Append(" ");
                sb.Append("DESC");
                return sb.ToString();
            }这样最好的????????
      

  3.   


    Create proc SeachTabel
    @topnumber nvarchar(5),
    @fields nvarchar(1000),
    @tablename nvarchar(500),
    @condition nvarchar(2000),
    @orderfield nvarchar(2000)
    as
    declare @SqlStr varchar(8000)
    set @SqlStr='select top '+@topnumber+' '+@fields+' from '+@tablename+' where '+@condition+ ' order by '+@orderfield+' desc'
    exec(@SqlStr)
      

  4.   

    存储过程不好调试,不过是个好方法,推荐使用StringBuilder