Android应用程序可以直接连接到在线mysql数据库吗?
Android 3.3 API 18
你好,
我正在开发我的第一个应用程序使用android。 该应用程序将不得不连接到在线数据库来存储用户数据。
我正在寻找包含MySql数据库的云存储。 但是,我的应用程序可以直接连接到这个MySql数据库,并从它推拉数据。 或者还有其他的事情我需要做?
非常感谢您的任何build议,
是的,你可以做到这一点。
您需要的材料:
- networking服务器
- 存储在networking服务器中的数据库
- 和一点点的android知识:)
- Web服务(JSON,XML等),无论你感到舒服
1.首先在清单文件中设置Internet权限
<uses-permission android:name="android.permission.INTERNET" />
2.创build一个类来从服务器发出HTTPRequest(我使用json parisng来获取值)
例如:
public class JSONfunctions { public static JSONObject getJSONfromURL(String url) { InputStream is = null; String result = ""; JSONObject jArray = null; // Download JSON data from URL try { HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(url); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); is = entity.getContent(); } catch (Exception e) { Log.e("log_tag", "Error in http connection " + e.toString()); } // Convert response to string try { BufferedReader reader = new BufferedReader(new InputStreamReader( is, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); result = sb.toString(); } catch (Exception e) { Log.e("log_tag", "Error converting result " + e.toString()); } try { jArray = new JSONObject(result); } catch (JSONException e) { Log.e("log_tag", "Error parsing data " + e.toString()); } return jArray; } }
3.在你的MainActivity
中创build类JsonFunctions
一个对象,并把url作为你想获取数据的参数
例如:
JSONObject jsonobject;
jsonobject = JSONfunctions.getJSONfromURL("http://YOUR_DATABASE_URL");
4.然后最后读取jsontags并将值存储在一个数组列表中,然后在listview中显示它,如果你想
如果你有任何问题,你可以按照这个博客,他给了优秀的Android教程AndroidHive
由于我写的上述答案早已回到现在, HttpClient
, HttpPost
, HttpEntity
已经在Api 23中被移除了。你可以在build.gradle(app-level)中使用下面的代码来继续在你的org.apache.http
中使用项目。
android { useLibrary 'org.apache.http.legacy' signingConfigs {} buildTypes {} }
或者你可以像下面一样使用HttpURLConnection
从服务器获取响应
public String getJSON(String url, int timeout) { HttpURLConnection c = null; try { URL u = new URL(url); c = (HttpURLConnection) u.openConnection(); c.setRequestMethod("GET"); c.setRequestProperty("Content-length", "0"); c.setUseCaches(false); c.setAllowUserInteraction(false); c.setConnectTimeout(timeout); c.setReadTimeout(timeout); c.connect(); int status = c.getResponseCode(); switch (status) { case 200: case 201: BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream())); StringBuilder sb = new StringBuilder(); String line; while ((line = br.readLine()) != null) { sb.append(line+"\n"); } br.close(); return sb.toString(); } } catch (MalformedURLException ex) { Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } finally { if (c != null) { try { c.disconnect(); } catch (Exception ex) { Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex); } } } return null;
}
或者你可以使用像Volley
, Retrofit
这样的第三方库来调用webservice api并获取响应,然后使用FasterXML-jackson
, google-gson
parsing它。
您可以使用PHP,JSP,ASP或任何其他服务器端脚本来连接MySQL数据库,并返回JSON数据,你可以parsing它在你的Android应用程序这个链接如何做到这一点
是的,你肯定可以连接到MySql的在线数据库,因为你需要创build一个Web服务。 该Web服务将为您提供访问MySql数据库的权限。 然后,您可以轻松地将数据推送到MySql数据库。 PHP将是创buildWeb服务的一个很好的select,它很容易实现。 祝你好运…
你想做什么是一个坏主意。 这将需要你在应用程序中embedded你的用户名和密码。 这是一个非常糟糕的想法,因为它可能是反向工程的APK,并获得用户名和密码到这个公开的MySQL服务器,可能包含敏感的用户数据。
我会build议做一个Web服务作为一个代理到MySQL服务器。 我假设用户需要login,所以你可以使用他们的用户名/密码来validation到Web服务。
看看这个在线后端。
Parse.com
他们提供推送通知,社交整合,数据存储以及使用云代码为应用程序的后端添加丰富的自定义逻辑的能力。
你一定可以做这样的应用程序,你需要通过调用一个PHP脚本来响应数据库,然后根据你的项目运行特定的查询,并以xml或者json formate的forms生成结果,这样可以显示在你的Android应用程序! 为完整的教程如何连接Android应用程序到MySQL我会build议检查这tutorila
第1步:在您的服务器上创buildWeb服务
第2步:让您的应用程序调用Web服务并接收结果集
这其实很简单。 但是,你无法直接实现它。 你需要select一个服务端技术。 你可以使用这个部分的任何东西。 这就是我们所说的RESTful API或SOAP API。 这取决于你select什么。 我已经完成了许多项目。 我宁愿REST。 所以会发生什么,你会在你的Web服务器上有一些脚本,你知道的URL。 比如我们需要做一个用户注册。 为此,我们有
mydomain.com/v1/userregister.php
现在从android端,你会发送一个HTTP请求到上面的URL。 上面的URL将处理用户注册,并会给你一个响应,说明操作是否成功。
有关上述概念的完整详细解释。 您可以访问以下链接。
** Android MySQL教程执行CRUD操作 **