2011-12-15 40 views
9

Tôi cần phát triển một ứng dụng có thể truy cập cơ sở dữ liệu SQL Server được lưu trữ trên máy chủ trong văn phòng. Bật nhân viên gọi từ xa vào máy chủ đầu cuối và truy cập cơ sở dữ liệu bằng ứng dụng dành cho máy tính để bàn mà Cơ sở dữ liệu đã được tạo. Ứng dụng máy tính để bàn truy cập cơ sở dữ liệu với một kết nối ODBC. Tôi đang viết một ứng dụng Android cho phép một phần nhỏ quyền truy cập vào cơ sở dữ liệu có sẵn trong ứng dụng dành cho máy tính để bàn và tôi đang tìm cách kết nối ứng dụng của mình với cơ sở dữ liệu này, cho dù đó là sử dụng kết nối ODBC (có khả năng bằng cách sử dụng. Net) hoặc theo cách khác.Cách tốt nhất để truy cập cơ sở dữ liệu trên máy chủ bằng Ứng dụng Android

Chỉnh sửa: Xin lỗi cho những người đã trả lời trước khi tôi giải thích xong câu hỏi của mình, nó được đăng ngẫu nhiên và một số bạn trả lời trước khi tôi chỉnh sửa xong.

Trả lời

3

bạn phải viết dịch vụ web ở phía máy chủ. có thể gửi dữ liệu dưới dạng gói Json tới thiết bị và trong thiết bị phân tích cú pháp các gói dữ liệu json và truy cập dữ liệu. cuộc gọi của bạn đến webservice phải là một cuộc gọi http ví dụ

http: \ server \ metnod \ get_somedata name = cái gì đó

và máy chủ nên truy vấn cơ sở dữ liệu cho tham số này và gửi cho bạn các phản ứng như Json. phân tích cú pháp json và nhận thông tin chi tiết của bạn.

Chỉnh sửa: đặt loại nội dung là "application/json" trong tiêu đề phản hồi của máy chủ. Đây là một ví dụ cho khách hàng để gửi một yêu cầu bài viết http đến máy chủ. ở đây jsonobjSend là json tôi đã contructed để gửi đến máy chủ với một số chi tiết. ex {table: "sometable", id: 90}. jsonobjRecv là json mà sẽ được gửi qua máy chủ

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; 

}

để tạo/phân tích một tấm séc json json.org

+0

Làm cách nào để đảm bảo rằng dịch vụ web của tôi trong C# thực sự gửi dữ liệu theo định dạng JSON? – Dazzmaster1

+0

tôi đã chỉnh sửa câu trả lời. xin vui lòng cho tôi biết nếu nó đủ cho bạn – AD14

+0

Vì vậy, khách hàng có xác định định dạng nào nhận được dữ liệu không? Tôi không cần phải làm bất cứ điều gì khác nhau ở phía máy chủ? – Dazzmaster1

2

Bạn phải tạo một máy chủ web sẽ là giao diện, sau đó bạn có thể cung cấp dịch vụ web cho ứng dụng của mình.

Nếu bạn có thể sửa đổi ứng dụng dành cho máy tính để bàn, hãy triển khai trực tiếp dịch vụ http vào đó. Vì vậy, dịch vụ sẽ chỉ khả dụng khi ứng dụng của bạn được khởi chạy.

Vì AnDro cho biết bạn có thể chọn json, nó sẽ nhẹ hơn khi chuyển dữ liệu. Nếu bạn chọn kỹ thuật json, hãy xem jackson.

0

Cũng xin đề nghị một API RESTful mà chấp nhận JSON để được niêm yết - và trả về kết quả JSON.

Bạn cũng có thể thêm URL ghi đè, gửi URL đến các bộ điều khiển khác nhau.

ví dụ: http // somehost.com/controller/action ... nơi bạn có thể đăng lên.

Điều này có thể được thực hiện trong ASP.NET chắc chắn (gần đây đã được mã hóa một cái gì đó tương tự trong PHP).

Các vấn đề liên quan