Új hozzászólás Aktív témák

  • trisztan94

    őstag

    A táblalekérésekkel kapcsolatban lenne egy kérdésem még

    RestSharppal történik a szerverrel a kommunikáció aszinkron módon.

    Ezt úgy raktam most össze, hogy van 12 RestRequest típusú változóm amelyekben a kérés paraméterei vannak (felhasználónév, jelszó, SQL query, stb).

    Így néz ki egy ilyen RestRequest:

    RestRequest nevekRequest= new RestRequest(hostName, Method.POST);
    nevekRequest.AddParameter("parancs", "SELECT * FROM nevek");
    nevekRequest.AddParameter("user", databaseusername);
    nevekRequest.AddParameter("prog_ver", prog_ver);
    nevekRequest.AddParameter("databasehost", databasehost);
    nevekRequest.AddParameter("databaseusername", databaseusername);
    nevekRequest.AddParameter("databasepassword", databasepassword);
    nevekRequest.AddParameter("databasename", databasename);
    nevekRequest.AddParameter("db", db);

    Ebből 12 van.
    Ezek után mind a 12-t lefuttatom

    client.ExecuteAsync(nevekRequest, NevekCallback)
    Ezt szintén 12x, minden egyes Request-re.

    Ezek után van megint 12 callback metódusom minden egyes request-re.
    private void UsersRequestCallback(IRestResponse response, RestRequestAsyncHandle handle)
    {
    List<Users> responseData = JsonConvert.DeserializeObject<List<Users>>(response.Content);
    Debug.WriteLine("Users-firstname: " + responseData[0].FirstName);
    }

    1. Tisztában vagyok vele, hogy ez így valami elképesztően gány, viszont így este nincs nagyon most ötletem, hogy hogyan lehetne szépen megoldani :(

    2. Valamikor memória túlcsordulás miatt behal a szerver a 12 egyszeri request miatt, tehát valahogyan úgy kellene csinálni, hogy amikor az 1. request készen van, akkor indítjuk a 2.-at, ha az kész a 3.-at, stb. Ezt szintén hogyan lehetne szépen megoldani?

    ---

    Végül a DeserializeObject<>-nek azt az osztályt adtam, amiből az adatbázis táblákat építettem fel, tehát:

    public class Nevek
    {
    [PrimaryKey, NotNull, MaxLength(11), AutoIncrement]
    public int id{ get; set; }
    [NotNull]
    public string nev{ get; set; }
    }

    Tehát:
    List<Nevek> responseData = JsonConvert.DeserializeObject<List<Nevek>>(response.Content);

    Az a baj, hogy az id a JSON stringben stringként van benne és a DeserializeObject meg nem tudja átkonvertálni integerré:

    Could not convert string to integer:

    De még ez a legkisebb probléma, mert más tábladefiníciókban van DateTime típus is.

    Tehát az lenne itt a kérdés, hogy hogyan tudom convertálni a deserializeobject értékeit úgy, hogy megfeleljenek azok a megadott típus (jelen esetben osztály) típusainak? Vagy kezeljek mindent stringként oszt' csókolom? Esetleg csináljak még 12 osztályt, amikben csak string-ként vannak ugyanezek a field-ek?

Új hozzászólás Aktív témák