Android 3.3 API 18
你好,
我正在使用 android 开发我的第一个应用程序。该应用程序必须连接到在线数据库来存储用户数据。
我正在寻找包含 MySQL 数据库的云存储。但是,我的应用程序可以直接连接到这个 MySQL 数据库并从中推送和拉取数据吗?或者还有其他我需要做的事情吗?
非常感谢您的任何建议,
是的,你可以这么做。
您需要的材料:
1.首先在你的manifest文件中设置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
Make 类的对象中JsonFunctions
并将 url 作为参数从您想要获取数据的位置传递
例如:
JSONObject jsonobject;
jsonobject = JSONfunctions.getJSONfromURL("http://YOUR_DATABASE_URL");
4.然后最后读取 jsontags 并将值存储在 arraylist 中,如果需要,稍后在 listview 中显示
如果你有任何问题,你可以关注这个博客,他提供了优秀的安卓教程AndroidHive
由于我写的上述答案很久以前,现在,HttpClient
已在 Api 23 中删除。您可以使用 build.gradle(app-level) 中的以下代码继续在您的项目中使用。HttpPost
HttpEntity
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;
}
或者您可以使用 3rd 方库Volley
来Retrofit
调用 webservice api 并获取响应,然后使用FasterXML-jackson
,来解析它google-gson
。
你想做的是一个坏主意。它会要求您在应用程序中嵌入您的用户名和密码。这是一个非常糟糕的主意,因为可能会对您的 APK 进行逆向工程,并获取此公开的 mysql 服务器的用户名和密码,该服务器可能包含敏感的用户数据。
我建议制作一个 Web 服务来充当 mysql 服务器的代理。我假设用户需要登录,因此您可以使用他们的用户名/密码对 Web 服务进行身份验证。
您可以使用 PHP、JSP、ASP 或任何其他服务器端脚本来连接 mysql 数据库并返回 JSON 数据,您可以在您的 android 应用程序中将其解析为这个链接如何做
第 1 步:在您的服务器上创建 Web 服务
第 2 步:让您的应用程序调用 Web 服务并接收结果集
是的,您绝对可以连接到 MySql 在线数据库,因为您需要创建 Web 服务。此 Web 服务将为您提供对 MySql 数据库的访问权限。然后您可以轻松地将数据拉取和推送到 MySql 数据库。PHP 将是创建易于实现的 Web 服务的好选择。祝你好运...
您绝对可以制作这样的应用程序,您需要通过调用 php 脚本来与数据库建立 http 连接,该脚本将根据您的项目运行特定的查询,并以 xml 或 json 格式生成结果,可以显示在您的 android 应用程序上!有关如何将 android 应用程序连接到 mysql的完整教程,我建议查看此教程
这实际上很容易。但是没有办法直接实现它。您需要选择服务端技术。这部分你可以使用任何东西。这就是我们所说的 RESTful API 或 SOAP API。这取决于你选择什么。我已经做了很多项目。我更喜欢 REST。那么会发生什么,您的 Web 服务器中将有一些脚本,并且您知道 URL。例如,我们需要进行用户注册。为此我们有
mydomain.com/v1/userregister.php
现在从 android 端,您将向上述 URL 发送 HTTP 请求。上面的 URL 将处理用户注册,并给你一个操作是否成功的响应。
有关上述概念的完整详细说明。您可以访问以下链接。