마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

listview에 mysql db값 뿌려주기 어떻게 하나요 ㅜ

0 추천

안드로이드를 배우고 있는 학생입니다

지금 mysql에 있는 데이터를 listview에 뿌려주려고 하는데

접근 방법 자체를 모르겠네요 ㅜㅜ

 

책이나 구글링을 통해 찾아봐도 햇갈리기만 하고..

php파일을 이용해서 데이터를 가져오는건 맞죠...?

 

제가 하는 방법이 뭐가 잘못된건지..좀 알려주세요 부탁드립니다...몇 일째 막히네요..

package com.example.androidproject;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import android.app.Activity;
import android.database.SQLException;
import android.os.Bundle;
import android.view.Menu;


public class Lock1Activity extends Activity {
	public static void mian(String[] args) {
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;
		String url = "jdbc:mysql://localhost/jongjin";
		
		String sql = "select * from db";
		
		try{
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection(url,"root", "apmesetup");
			System.out.println("연결 성공");
			
			stmt = conn.createStatement();
			rs = stmt.executeQuery(sql);
			System.out.println("No\tName\t Phone");
			System.out.println("--------------------");
			while (rs.next()) {
				System.out.print(rs.getString("name")+"\t");
				System.out.print(rs.getString("subname")+"\t");
				System.out.print(rs.getString("period")+"\t");
				System.out.print(rs.getString("place")+"\t");
				System.out.print(rs.getString("time")+"\t");
				System.out.print(rs.getString("intro")+"\t");
				System.out.print(rs.getString("region")+"\t");
				System.out.print(rs.getString("month")+"\t");
				System.out.print(rs.getString("auspice")+"\t");
				System.out.print(rs.getString("manage")+"\t");
				System.out.print(rs.getString("sponsor")+"\t");
				System.out.print(rs.getString("hom")+"\t");
				
			}
		}
		
			catch (Exception e) {
				e.printStackTrace();
			}finally {
				try {
					if(rs != null)rs.close();
					if(stmt != null)stmt.close();
					if(conn != null)conn.close();
				}catch (SQLException e){
					e.printStackTrace();
				}
			}
	}
};
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lock1);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_lock1, menu);
        return true;
    }
}

 

안드로이드경태 (170 포인트) 님이 2013년 6월 20일 질문

2개의 답변

0 추천
 
채택된 답변
안드로이드에서 직접적으로 DB 데이터를 가져올수 잇는 DB 오직 "SQLite" 뿐 입니다.

따라서 mySQL 과 같은 대형(?) DB 는 말씀하신대로 php, asp, jsp 와 같은 서버스크립트 언어가 중계 역할을 수행해서 가져오는 구조로 사용해야 합니다.

현재 보여주신 소스는 안드로이드에서 mySQL 로 직접연결을 시도하기 때문에 "절대로" 구현하실수 없는 구조가 되겠습니다.

준비물과 흐름을 알려드리자면!

php 라고 하셨으니,

아파치 웹서버가 일단 구축이 되어 있어야 하고요, 그 위에 php 모듈과 mySQL 서버가 셋업 되어 있어야하겠지요.

(인터넷에 apmsetup 라고 검색하시면 아파치+php+mySQL 원샷에 설치/구성되는 패키지를 구하실수 있을겁니다.)

준비물은 이제 됬고.

흐름은 다음과 같습니다.

안드로이드 -> php 페이지(웹서버) - > mySQL -> php (웹서버) -> 안드로이드

1. 안드로이드에서 웹서버에 이미 제작된 php 페이지로 mySQL 의 데이터를 요청하는 쿼리값을 post/get 방식으로 전송 합니다.

2. php 페이지에서는 안드로이드에서 받은 쿼리 값을 바탕으로 mySQL 에 접속하여 데이터를 받아옵니다.

3. php 페이지는 mySQL 에서 받은 데이터를 화면에 출력합니다. (이때, 데이터를 xml, json 형태로 출력해야 안드로이드에서 파싱해서 활용하기 좋습니다.)

4. 안드로이드에서 php 페이지의 데이터를 긁어와서 알맞은 형태로 파싱해서 활용합니다.

 

안드로이드와 mySQL 은 반드시 php 로 구성된 웹서버를 거쳐야하기  때문에

- 웹서버에 대한 기반 지식

- 안드로이드에서 웹서버로 post/get하고 받아오는 지식

- php 에서 mySQL 연동하는 지식

- php에서 json 이나 xml 를 만들고 안드로이드에서 이를 파싱해서 활용하는 지식

들이 있어야 겠네요. 관련 키워드로  검색해보시면 많은 정보를 얻으실수 있을꺼라 생각 됩니다.
Frog (3,910 포인트) 님이 2013년 6월 20일 답변
안드로이드경태님이 2013년 6월 20일 채택됨
0 추천
안녕하세요! 웹연동부분을 공부하시나봐요 ?^^*

1. 안드로이드에서 데이터값을 php로 전송 후 db에 저장은 시키셨나요 ?

2. 데이터를 다시 안드로이드로 전송은 하셨나요?

- 안드로이드에는 JSON 방식과 XMLPullparser 방식이 있습니다. 파싱방법 입니다.

3. 리스트뷰에 내용을 출력하시려면, Adapter를 이용하셔서 출력하시는 방법이 있습니다.

 

구글에 '안드로이드 php 연동' 이라 검색해보셔요! 많은 내용이 나옵니다.

참고로 단순히 리스트만 출력하실게 아니라 한칸에 여러내용을 집어넣어서

출력하시려면 CustomAdapter를 사용하셔야 한다는것도 알려드릴께요!

순서대로 한개씩 차근차근 해보셔요! 도움이 되시길 바랍니다!
안드로메다개발자 (8,830 포인트) 님이 2013년 6월 20일 답변
...