Android 3.3 API 18
您好,
我正在使用android开发我的第一个应用程序。应用程序必须连接到在线数据库以存储用户数据。
我正在寻找包含MySQL数据库的云存储。但是,我的应用程序可以直接连接到此MySQL数据库并从中推送和提取数据吗?或者还有其他我需要做的事情吗?
非常感谢任何建议,
答案 0 :(得分:70)
是的,你可以做到。
您需要的材料:
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
由于我写的上述答案很久以前,现在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
解析它。< / 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)
答案 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 强> **