android应用程序能否直接连接到在线mysql数据库

tkqqtvp1  于 2021-07-08  发布在  Java
关注(0)|答案(8)|浏览(280)
Android 3.3 API 18

你好,
我正在用android开发我的第一个应用程序。该应用程序必须连接到一个在线数据库来存储用户数据。
我正在寻找一个云存储与mysql数据库包括。但是,我的应用程序能否直接连接到这个mysql数据库并从中推拉数据?或者我还有别的事要做?
非常感谢您的建议,

lc8prwob

lc8prwob1#

你肯定可以做这样的应用,你需要做http连接到数据库,通过调用一个php脚本,该脚本将根据你的项目运行特定的查询,并以xml或json格式生成结果,这些结果可以显示在你的android应用程序上!。关于如何将android应用程序连接到mysql的完整教程,我建议查看这个教程

vfh0ocws

vfh0ocws2#

你想做的是个坏主意。它需要你在应用程序中嵌入用户名和密码。这是一个非常糟糕的想法,因为它可能是反向工程您的apk和获得用户名和密码,这个面向公众的mysql服务器可能包含敏感的用户数据。
我建议创建一个web服务作为mysql服务器的代理。我假设用户需要登录,这样您就可以使用他们的用户名/密码对web服务进行身份验证。

3qpi33ja

3qpi33ja3#

您可以使用php、jsp、asp或任何其他服务器端脚本来连接mysql数据库,并返回json数据,您可以在android应用程序中解析这些数据。此链接说明如何操作

fxnxkyjh

fxnxkyjh4#

其实很简单。但你不可能直接做到。您需要选择服务端技术。这部分你什么都可以用。这就是我们所说的restfulapi或soapapi。这取决于你选择什么。我已经做了很多项目与这两个。我宁愿休息。所以接下来你会在你的web服务器上有一些脚本,你知道这些URL。例如,我们需要进行用户注册。为此我们有
mydomain.com/v1/userregister.php
现在从android端向上面的url发送一个http请求。上面的url将处理用户注册,并给出操作是否成功的响应。
对于上述概念的完整详细解释。您可以访问以下链接。

android mysql教程执行crud操作

3yhwsihp

3yhwsihp5#

步骤1:在服务器上创建web服务
步骤2:让应用程序调用web服务并接收结果集

yqkkidmi

yqkkidmi6#

是的,你能做到。
您需要的材料:
Web服务器
存储在Web服务器中的数据库
还有一点android知识:)
webservices(json,xml…等等)任何你喜欢的东西
1.首先在清单文件中设置internet权限

<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 并将url作为参数传递给要从中获取数据的位置
如:

JSONObject jsonobject;
``` `jsonobject = JSONfunctions.getJSONfromURL("http://YOUR_DATABASE_URL");` 4.最后读取jsontags并将值存储在arraylist中,如果需要,稍后在listview中显示它
如果你有任何问题,你可以关注这个博客,他提供了优秀的android教程androidhive
因为上面的答案我写了很久以前和现在 `HttpClient` ,  `HttpPost` , `HttpEntity` 已在api 23中删除。您可以在build.gradle(应用程序级别)中使用以下代码继续使用 `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` 调用webserviceapi并获取响应,然后使用 `FasterXML-jackson` ,  `google-gson` .
fhity93d

fhity93d7#

看看这个在线后端。
parse.com网站
它们提供推送通知、社交整合、数据存储,以及使用云代码向应用程序后端添加丰富自定义逻辑的能力。

c90pui9n

c90pui9n8#

是的,当然你可以连接到mysql在线数据库,因为你需要创建一个web服务。此web服务将为您提供对mysql数据库的访问。然后您可以轻松地将数据拉入和推送到mysql数据库。php将是创建web服务的一个很好的选择,它的实现非常简单。祝你好运。。。

相关问题