Android 앱이 온라인 mysql 데이터베이스에 직접 연결할 수 있습니까?
Android 3.3 API 18
안녕,
저는 안드로이드를 이용한 첫 앱을 개발 중입니다.앱은 사용자 데이터를 저장하기 위해 온라인 데이터베이스에 연결해야 합니다.
MySQL 데이터베이스가 포함된 클라우드 스토리지를 찾고 있습니다.단, MySQL 데이터베이스에 직접 접속하여 데이터를 푸시 및 풀 수 있습니까?아니면 제가 해야 할 다른 일이 있나요?
제안해 주셔서 감사합니다.
네, 할 수 있어요.
필요한 재료:
- 웹 서버
- 웹 서버에 저장된 데이터베이스
- Android에 대한 약간의 지식도 있습니다. :)
- Webservices(json, Xml 등)에 대한 사용 편의성
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
데이터를 가져올 때 URL을 인수로 전달합니다.
예:
JSONObject jsonobject;
jsonobject = JSONfunctions.getJSONfromURL("http://YOUR_DATABASE_URL");
4. 마지막으로 jontags를 읽고 값을 배열 목록에 저장한 후 필요에 따라 목록 뷰에 표시합니다.
문제가 있으면 이 블로그를 팔로우 할 수 있습니다.그는 안드로이드 튜토리얼을 훌륭하게 제공하고 있습니다.하이브
위 답변은 예전이나 지금이나 쓰던 답변이기 때문에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
webservice api를 호출하여 응답을 얻고 나중에 를 사용하여 구문 분석합니다.FasterXML-jackson
,google-gson
.
네가 하고 싶은 건 나쁜 생각이야.앱에 사용자 이름과 비밀번호를 입력해야 합니다.이는 APK를 리버스엔지니어링하여 기밀 사용자 데이터를 포함하는 이 공개적인 mysql 서버에 사용자 이름과 비밀번호를 가져올 수 있기 때문에 매우 좋지 않은 생각입니다.
mysql 서버의 프록시 역할을 하는 웹 서비스를 만들 것을 제안합니다.웹 서비스에 대한 인증을 위해 사용자 이름/비밀번호를 사용할 수 있도록 로그인해야 합니다.
PHP, JSP, ASP 또는 기타 서버 사이드 스크립트를 사용하여 mysql 데이터베이스와 연결하고 이를 해석할 수 있는 JSON 데이터를 안드로이드 앱에서 반환할 수 있습니다.이 링크는 어떻게 해야 합니다.
스텝 1 : 서버 상에서 웹 서비스를 만듭니다.
스텝 2: 어플리케이션이 웹 서비스에 콜을 발신하여 결과 세트를 수신하도록 합니다.
예. 웹 서비스를 만들어야 하는 MySql 온라인 데이터베이스에 연결할 수 있습니다.이 웹 서비스는 MySql 데이터베이스에 대한 액세스를 제공합니다.그러면 MySql Database에 데이터를 쉽게 풀어서 푸시할 수 있습니다.PHP는 구현하기 쉬운 웹 서비스를 만들기 위한 좋은 옵션이 될 것입니다.행운을 빈다...
이러한 어플리케이션은 확실히 만들 수 있습니다.데이터베이스에 http 접속을 하려면 php 스크립트를 호출하여 프로젝트에 따라 특정 쿼리를 실행하고 결과를 xml 또는 json formate 형식으로 생성해야 합니다.whihc는 안드로이드 어플리케이션에 표시될 수 있습니다!안드로이드 애플리케이션을 mysql에 연결하는 방법에 대한 자세한 튜토리얼은 이 튜토리얼을 확인해 보시기 바랍니다.
그것은 사실 매우 쉽다.하지만 당신이 직접 그것을 성취할 수 있는 방법은 없습니다.서비스 사이드 테크놀로지를 선택해야 합니다.이 부분은 아무거나 써도 돼요.이를 RESTful API 또는 SOAP API라고 합니다.무엇을 선택할지는 당신에게 달려 있습니다.저는 둘 다와 함께 많은 프로젝트를 해왔습니다.저는 휴식이 더 좋아요.그러면 웹 서버에 스크립트가 몇 개 있고 URL을 알 수 있습니다.예를 들어 사용자 등록을 해야 합니다.그리고 이를 위해 우리는
mydomain.com/v1/userregister.php
이제 Android 측에서 위의 URL로 HTTP 요청을 보냅니다. 그리고 위의 URL은 사용자 등록을 처리하여 작업이 성공했는지 여부에 대한 응답을 제공합니다.
위의 개념에 대한 자세한 설명은 다음과 같습니다.다음 링크를 방문하실 수 있습니다.
**CRUD 작업을 수행하기 위한 Android MySQL 튜토리얼**
이 온라인 백엔드를 보세요.
푸시 알림, 소셜 통합, 데이터 스토리지 및 클라우드 코드를 통해 앱 백엔드에 풍부한 사용자 지정 로직을 추가할 수 있는 기능을 제공합니다.
언급URL : https://stackoverflow.com/questions/19217835/can-an-android-app-connect-directly-to-an-online-mysql-database
'programing' 카테고리의 다른 글
Coffeescript에 의한 파라미터가 있는 setTimeout 작성 방법 (0) | 2022.09.23 |
---|---|
문자열의 마지막 두 문자를 선택하는 방법 (0) | 2022.09.23 |
Node.js에서 다른 파일의 함수를 "포함"하려면 어떻게 해야 합니까? (0) | 2022.09.23 |
Laravel 마이그레이션 테이블이 이미 있지만 이전 테이블이 아닌 새 테이블을 추가하려고 합니다. (0) | 2022.09.23 |
익명 함수를 매개 변수로 사용하여 외부 변수 액세스 (0) | 2022.09.23 |