使用WCF Rest以Json格式从DataBase请求单个记录

时间:2013-06-07 07:33:23

标签: c# json wcf-rest

   public Users GetUserById(string _id)
   {
        MySqlConnection conn = new MySqlConnection(connstr);
        conn.Open();
        string sql = ("select * from Books where id = " + _id);

        MySqlCommand cmd = new MySqlCommand(sql, conn);
        MySqlDataReader reader = cmd.ExecuteReader();
        Users obj = new Users();
        if (reader.Read())
        {
            obj.id = Convert.ToInt32(reader[0]);
            obj.UserName = reader[1].ToString();

        }
        reader.Close();
        conn.Close();
        return obj;
    }

我正在以Json格式发布信息,但

Out Put for this is:{“UserName”:“John”,“id”:1}

预期输出为:[{“UserName”:“John”,“id”:1}]

我错过了Square支撑记录 我的代码有问题吗?

1 个答案:

答案 0 :(得分:3)

您的预期输出,即[{"UserName":"John","id":1}] 表示Users对象的列表。

因此,如果您希望此类输出应该从您的函数返回,那么您只需要从函数中返回一个用户列表。

但是作为你的函数名GetUserById,我认为它应该返回单个用户(所以我不知道为什么试图从这里返回一个用户数组)

但无论如何,你可以用这种方式得到预期的输出

public List<Users> GetUserById(string _id)
{
   MySqlConnection conn = new MySqlConnection(connstr);
   conn.Open();
   string sql = ("select * from Books where id = " + _id);

   MySqlCommand cmd = new MySqlCommand(sql, conn);
   MySqlDataReader reader = cmd.ExecuteReader();

   List<Users> users=new List<Users>();
   Users obj = new Users();
   if (reader.Read())
   {
     obj.id = Convert.ToInt32(reader[0]);
     obj.UserName = reader[1].ToString();
     users.Add(obj);
   }
   reader.Close();
   conn.Close();
   return users;
}

现在只要这个users转换成json格式,它就会返回预期的输出。