2011-12-15 13 views
9

Potrzebuję stworzyć aplikację, która będzie miała dostęp do bazy danych SQL Server przechowywanej na serwerze w biurze. Na wezwanie personelu zdalnego pulpitu do serwera terminali, a dostęp do bazy danych za pomocą aplikacji pulpitu, dla których została wykonana baza danych. Aplikacja komputerowa uzyskuje dostęp do bazy danych za pomocą połączenia ODBC. Piszę aplikację na Androida, która pozwoli na niewielką część dostępu do tej bazy danych, która jest dostępna w aplikacji komputerowej, i szukam sposobów połączenia mojej aplikacji z tą bazą danych, bez względu na to, czy używa ona połączenia ODBC (Potencjalnie przy użyciu .Net) lub w inny sposób.Najlepszy sposób uzyskania dostępu do bazy danych na serwerze przy użyciu aplikacji Android

Edytuj: Przepraszam za tych, którzy odpowiedzieli, zanim skończyłem tłumaczenie mojego pytania, napisali przez przypadek i niektórzy z was odpowiedzieli, zanim skończyłem edycję.

Odpowiedz

3

musisz napisać usługę po stronie serwera. może wysyłać dane jako pakiety Json do urządzenia, aw urządzeniu analizować pakiety JSON i uzyskiwać dostęp do danych. połączeń na usługa powinna być wezwanie http np

http: \ server \ metnod \ get_somedata name = coś

i serwer powinien kwerendy bazy danych dla tego parametru i wysłać Ci réponse jako JSON. przeanalizuj json i zdobądź swoje dane.

Edytuj: Ustaw typ zawartości jako "application/json" w nagłówku odpowiedzi serwera. Jest to przykład dla klienta, który wysyła do serwera żądanie HTTP Post. tutaj jsonobjSend jest jsonem, który napisałem, aby wysłać na serwer z pewnymi szczegółami. ex {table: "sometable", id: 90}. jsonobjRecv jest JSON, który zostanie wysłany przez serwer

HttpPost httpPostRequest = new HttpPost(url); 
     StringEntity se; 
     se = new StringEntity(jsonObjSend.toString()); 

     // Set HTTP parameters 
     httpPostRequest.setEntity(se); 
     httpPostRequest.setHeader("Authorization", usercredential); 
     httpPostRequest.setHeader("Accept", "application/json"); 
     httpPostRequest.setHeader("Content-type", "application/json"); 
     httpPostRequest.setHeader("Accept-Encoding", "gzip"); // only set this parameter if you would like to use gzip compression 
     long t = System.currentTimeMillis(); 
     response = (HttpResponse) httpclient.execute(httpPostRequest); 
     Log.i(TAG, "HTTPResponse received in [" + (System.currentTimeMillis()-t) + "ms]"); 
     //Get hold of the response entity (-> the data): 
     HttpEntity entity = response.getEntity(); 

     if (entity != null) { 
      // Read the content stream 
      InputStream instream = entity.getContent(); 
      Header contentEncoding = response.getFirstHeader("Content-Encoding"); 
      if (contentEncoding != null && contentEncoding.getValue().equalsIgnoreCase("gzip")) { 
       instream = new GZIPInputStream(instream); 
      } 

      // convert content stream to a String 
      String resultString= convertStreamToString(instream); 
      Log.v(null, "resultString "+resultString); 
      instream.close(); 


      // Transform the String into a JSONObject 
      if(resultString!=null){ 
       jsonObjRecv = new JSONObject(resultString); 

      } 

      // Raw DEBUG output of our received JSON object: 
      Log.i(TAG,"<jsonobject>\n"+jsonObjRecv.toString()+"\n</jsonobject>"); 

      return jsonObjRecv; 

}

utworzyć/analizowania check json json.org

+0

Jak mogę się upewnić, że moje webservice w języku C# rzeczywiście wysyła dane w formacie JSON? – Dazzmaster1

+0

Edytowałem odpowiedź. proszę dać mi znać, czy to wystarczy dla ciebie – AD14

+0

Więc czy klient decyduje, który format otrzymuje dane? Nie muszę robić nic innego po stronie serwera? – Dazzmaster1

2

Musisz utworzyć serwer WWW, który będzie interfejsem, możesz wtedy udostępnić usługę internetową dla swojej aplikacji.

Jeśli możesz zmodyfikować aplikację komputerową, zaimplementuj bezpośrednio do niej usługę http. Usługa będzie dostępna tylko po uruchomieniu aplikacji.

Jak powiedział AnDro, możesz wybrać json, który będzie lżejszy do transferu danych. Jeśli wybierzesz json techno, spójrz na numer jackson.

0

także sugerowałoby REST API, które akceptuje JSON zostać wysłane - i zwraca wyniki JSON.

Możesz także dodać przeróbki URL, które wysyłają adresy URL do różnych kontrolerów.

np. http // somehost.com/controller/action ... gdzie możesz pisać.

Można to zrobić na ASP.NET na pewno (niedawno kodowane coś podobnego w PHP).

Powiązane problemy