Android应用程序可以直接连接到在线mysql数据库

时间:2013-10-07 05:45:34

标签: android mysql

Android 3.3 API 18

您好,

我正在使用android开发我的第一个应用程序。应用程序必须连接到在线数据库以存储用户数据。

我正在寻找包含MySQL数据库的云存储。但是,我的应用程序可以直接连接到此MySQL数据库并从中推送和提取数据吗?或者还有其他我需要做的事情吗?

非常感谢任何建议,

8 个答案:

答案 0 :(得分:70)

是的,你可以做到。

您需要的材料:

  1. WebServer
  2. 存储在网络服务器中的数据库
  3. 还有一点知识点知识:)
  4. Webservices(json,Xml ......等)无论你感到满意还是
  5. 1。首先在清单文件中设置互联网权限

     <uses-permission android:name="android.permission.INTERNET" />
    

    2. 创建一个类来从服务器发出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制作班级JsonFunctions的对象,并将网址作为您想要获取数据的参数传递

    例如:

    JSONObject jsonobject;
    

    jsonobject = JSONfunctions.getJSONfromURL("http://YOUR_DATABASE_URL");

    4. 然后最后阅读jsontags并将值存储在arraylist中,然后在listview中显示它(如果你想要的话)

    如果您有任何问题,可以关注此博客 他提供了优秀的android教程AndroidHive

    由于我写的上述答案很久以前,现在HttpClientHttpPostHttpEntity已在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;
    

    }

    或者您可以使用VolleyRetrofit等第三方库调用webservice api并获取响应,然后使用FasterXML-jacksongoogle-gson解析它。< / p>

答案 1 :(得分:8)

您可以使用PHP,JSP,ASP或任何其他服务器端脚本连接mysql数据库,并返回可以在Android应用程序中解析它的JSON数据this link how to do it

答案 2 :(得分:7)

你想做的是一个坏主意。它需要您在应用程序中嵌入您的用户名和密码。这是一个非常糟糕的主意,因为它可能可以对您的APK进行逆向工程,并获取可能包含敏感用户数据的公开服务器的用户名和密码。

我建议创建一个Web服务来充当mysql服务器的代理。我假设用户需要登录,因此您可以使用他们的用户名/密码对Web服务进行身份验证。

答案 3 :(得分:4)

是的,您肯定可以连接到MySql在线数据库,因为您需要创建一个Web服务。此Web服务将为您提供对MySql数据库的访问。然后,您可以轻松地将数据拉入并推送到MySql数据库。 PHP将是创建Web服务的一个很好的选择,它易于实现。祝你好运......

答案 4 :(得分:3)

你绝对可以做这样的应用,你需要对数据库进行http连接,通过调用一个php脚本来响应你的项目运行特定的查询,并以xml或json格式的形式生成结果,whihc可以显示在您的Android应用程序上! 有关how to connect android application to mysql的完整教程,我建议您查看此tutorila

答案 5 :(得分:2)

第1步:在您的服务器上制作网络服务

第2步:让您的应用程序调用Web服务并接收结果集

答案 6 :(得分:2)

看看这个在线后端。

Parse.com

它们提供推送通知,社交集成,数据存储以及使用Cloud Code为您应用的后端添加丰富的自定义逻辑的功能。

答案 7 :(得分:1)

实际上很容易。但是你无法直接实现它。您需要选择服务端技术。你可以为这部分使用任何东西。这就是我们所说的RESTful API或SOAP API。这取决于你选择什么。 我和两者做了很多项目。我更喜欢REST。 那么会发生什么情况,您的Web服务器中会有一些脚本,并且您知道URL。例如,我们需要进行用户注册。为此,我们有

mydomain.com/v1/userregister.php

现在从android端,您将向上述URL发送HTTP请求。上面的URL将处理用户注册,并会给出一个操作是否成功的响应。

有关上述概念的完整详细说明。您可以访问以下链接。

<强> **Android MySQL Tutorial to Perform CRUD Operation **