public  static IList<Order> GetOrdersBySql( string sql, params SqlParameter[] values )
        {
            List<Order> list = new List<Order>(); try
{
DataTable table = DBHelper.GetDataSet( sql, values );

foreach (DataRow row in table.Rows)
{
Order order = new Order();

order.Id = (int)row["Id"];
order.OrderDate = (DateTime)row["OrderDate"];
order.TotalPrice = (decimal)row["TotalPrice"];
order.User = UserService.GetUserById((int)row["UserId"]); //FK

list.Add(order);
}

return list;
}
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return null;
            }

        }    public static IList<Order> GetOrdersBylog(string loginid)
        {
            string sqlby = "select * from orders where userid=(select id from users where loginid=@loginid)";
            
        }
这是我的SQL语句 怎么才能正确调用上面的方法?

解决方案 »

  1.   


    记得给sqlby 添加参数。直接下不就行了GetOrdersBySql( sqlby ,  loginid)
      

  2.   


     public static IList<Order> GetOrdersBylog(string loginid)
            {
                string sqlby = "select * from orders where userid=(select id from users where loginid=@loginid)";
                return GetOrdersBySql(sqlby,loginid);
            }
    错误 2 与“MyBookShop.DAL.OrderService.GetOrdersBySql(string, params System.Data.SqlClient.SqlParameter[])”最匹配的重载方法具有一些无效参数
    错误 3 参数“2”: 无法从“string”转换为“System.Data.SqlClient.SqlParameter[]”
      

  3.   

     return GetOrdersBySql(sqlby,{new SqlParameter(loginid)});
    SqlParameter怎么初始化你自己再试试或者是return GetOrdersBySql(sqlby,new SqlParameter[]{(loginid)});其实这个方法参数就写错了,params和 []一齐用啥意思?
     public  static IList<Order> GetOrdersBySql( string sql, params SqlParameter[] values )
    可以写成
     public  static IList<Order> GetOrdersBySql( string sql, params SqlParameter values )
      

  4.   

    string sql
    params SqlParameter[] values 两个返回值啊。
    弄一个IList<Order> 变量接收方法名  填入2个变量。
      

  5.   

    一个参数是SQL语句
    另一个是SQL语句的参数数组。