2012-05-30 30 views
1

我使用C#和MySQL在asp.net中創建了webservice。我想從此服務返回多個值。我正在使用以下代碼:如何從webservice返回多個字符串?

[WebMethod] 
public string RegisterUserViaFacebook(string fbid, string fbmailid,string devicetype) 
{ 
    string success = "Already Registered"; 
    string id="", name=""; 

    if (!ExistsFBID(fbid)) 
    { 
     name = GenerateUserName(); 

     string password = generatePassword(10); 

     string insertUser = "Insert into tbl_userinfo(UserName,Password,Facebook_ID,Facebook_EmailID,DeviceType) values"; 
     insertUser += "('" + name + "' ,'" + password + "','" + fbid + "','" + fbmailid + "','" + devicetype + "')"; 
     con = new MySqlConnection(conString); 
     con.Open(); 
     MySqlCommand cmd = new MySqlCommand(insertUser, con); 
     success = cmd.ExecuteNonQuery().ToString(); 
     con.Close(); 

     string getID = "SELECT UserID from tbl_userinfo where UserName='" + name + "' "; 
     con = new MySqlConnection(conString); 
     con.Open(); 
     MySqlCommand cmd1 = new MySqlCommand(getID, con); 
     id = cmd1.ExecuteScalar().ToString(); 
     con.Close(); 


     if (Convert.ToInt16(success) > 0) 
     { 
      SendMail(fbmailid, name, password); 
      success = "New User" ; 
     } 
     else 
      success = "Error in Insertion"; 
    } 
    else 
    { 
     string getID1 = "SELECT UserID, UserName from tbl_userinfo where Facebook_ID='" + fbid + "' "; 
     con = new MySqlConnection(conString); 
     con.Open(); 
     MySqlCommand cmd2 = new MySqlCommand(getID1, con); 
     MySqlDataReader info = cmd2.ExecuteReader(); 

     while (info.Read()) 
     { 
      id = info.GetString(0); 
      name = info.GetString(1); 

     } 
     con.Close(); 
    } 

    string jsonString = JsonConvert.SerializeObject(success); 
    String finalString = "{\"USER IS\":"; 
    finalString += jsonString; 
    finalString += "}"; 

    string jsonString1 = JsonConvert.SerializeObject(id); 
    String finalString1 =finalString + "{\"ID IS\":"; 
    finalString1 += jsonString1; 
    finalString1 += "}" ; 

    string jsonString2 = JsonConvert.SerializeObject(name); 
    String finalString2 = finalString1 + "{\"NAME IS\":"; 
    finalString2 += jsonString2; 
    finalString2 += "}"; 
    return finalString2; 


} 

但它返回單個字符串中的所有值。我想單獨返回值爲Succeess,IDName

我該怎麼做?

+1

你爲什麼不以**數組的形式返回值? –

+0

@huMptyduMpty - 謝謝你的回覆。你可以請指導如何做到這一點? – RKP

+0

你爲什麼手工製作SQL和JSON?在那裏有大量的庫可以用較少的代碼和較少的錯誤執行相同的操作。 – CodeCaster

回答

8

創建一個簡單的類來保存Succeess,id和name並返回它的序列化實例。

public class RegistrationResult 
{ 
    public string Success { get; set; } 
    public string Name { get; set; } 
    public int Id { get; set; } 
} 

你可以這樣做:

var result = new RegistrationResult { Success = success, Name = name, Id = id} ; 
return JsonConvert.SerializeObject(success); 
+0

@Downvoter - 謹慎評論? – Oded

+0

如果你不想創建一個類,你可以使用輸出參數。但我更喜歡這個班。僅供參考 – Tomtom

+0

@geon - 但_to_序列化爲JSON以開始,您需要一個適當的對象來保存所有這些值。 – Oded

0

你可能想在JSON返回辛格運河對象。

return "{user: "+JsonConvert.SerializeObject(success)+", id: "+JsonConvert.SerializeObject(id)+", name: "+JsonConvert.SerializeObject(name)+"}"; 

Oded的回答也很好。這有點更清楚,但也需要額外的課程。