使用Android应用程序访问服务器上数据库的最佳方法

我需要开发一个可以访问存储在办公室服务器上的SQL Server数据库的应用程序。 打电话给工作人员远程桌面到terminal服务器,并使用数据库的桌面应用程序访问数据库。 桌面应用程序使用ODBC连接访问数据库。 我正在写一个android应用程序,它将允许访问这个数据库的桌面应用程序的一小部分,我正在寻找方法来连接我的应用程序到这个数据库,无论是使用ODBC连接(可能使用.Net),或者以其他方式。

编辑:对于那些在我解释完我的问题之前回答的人,对不起,我发布了意外,有些人在我编辑完之前回答了。

Solutions Collecting From Web of "使用Android应用程序访问服务器上数据库的最佳方法"

你必须在服务器端编写一个web服务。 可以将数据作为Json数据包发送到设备,并且在设备中parsingjson数据包并访问数据。 你对web服务的调用应该是一个http调用,例如

HTTP:\服务器\方法An Iteraitve \ get_somedata名=东西

服务器应该在数据库中查询这个参数并把你的响应发送给Json。 parsingjson并获取您的详细信息。

编辑:在服务器响应头中设置内容types为“application / json”。 这是客户端向服务器发送http post请求的一个例子。 这里jsonobjSend是我已经构build发送到服务器的一些细节的JSON。 ex {table:“sometable”,id:90}。 jsonobjRecv是将由服务器发送的json

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; 

}

创build/parsingjson检查json.org

您必须创build一个将作为接口的Web服务器,然后可以为您的应用程序提供Web服务。

如果你可以修改你的桌面应用程序,直接执行http服务。 所以只有当您的应用程序启动时才能使用该服务。

正如AnDro所说,你可以selectjson,这将是数据传输的更轻。 如果你selectJSON技术看看jackson 。

还会build议一个接受JSON的RESTful API发布 – 并返回JSON结果。

您也可以添加URL重写,它将URL分发给各个控制器。

例如HTTP / / somehost.com /控制器/行动…你可以张贴到。

这可以在ASP.NET中完成(最近刚刚在PHP中编写了类似的东西)。