안녕하세요~
현 웹개발자로 근무 중인 네티즌(?) 입니다.
웹개발하며 틈틈히 공부 하며 간단하게 위젯을 하나 만들어 보려고 하는데요.
자바는... 안드로이드 하며 이번에 처음 접하게 되었습니다.
질문 들어 갑니다.
현재 위젯으로 안드로이드 자체 sqllite 가 아닌 DB서버에 있는 DB에 연결하여 몇가지 데이터만 가져오려고 합니다.
몇개의 데이터만 가지고 해당 위젯에 몇 라인 정도 제목을 노출시켜보려고 하는데요
도통 안드로이드에서 외부 DB서버에 연결 하는 방법을 못찾겠네요... API나 책을 봐도 실무적인 내용은 실질적으로
없는거 같아서요
본사이트에서 여러가지 검색을해봤는데 DB서버에 연결보다는 웹서버에 XML로 만들어 파싱하라는 답변들이 많았습니다.
웹개발자기때문에 XML만드는거는 문제가 없지만 외부에 있는것을 어떻게 가져오고 또한 DB서버에 다이렉트로 연결이 된다면
어떠한 방법으로 접근 가능한지 로직이나 프로세스적인 답변 부탁드리겠습니다.
<?xml version='1.0' encoding='utf-8'?> <record> <item title='전자상거래 시스템'img1='131497411001.jpg'writer='홍길순'price='28000'publish='그린출판사'>2</item> </record> <record> <item title='데이터베이스 시스템'img1='13149740670ha.png'writer='홍길동'price='15000'publish='좋은 출판사'>1</item> </record> 이런식으로 결과가 나오겠고요 XML pullparser 가 우선 직관적이라 사용이 편리합니다. SAX, DOM 모두다 장단점이 있으니 살펴보심이 좋겠고 안드로이드 코딩쪽은 private void parsingDefaultCreate() { try { URL defaultURL = new URL("위에 php 주소); XmlPullParserFactory parserCreator = XmlPullParserFactory.newInstance(); XmlPullParser parser = parserCreator.newPullParser(); parser.setInput(defaultURL.openStream(), "utf-8"); int parserEvent = parser.getEventType(); boolean inTitle = false; int i = 0; try { while (parserEvent != XmlPullParser.END_DOCUMENT) { switch(parserEvent) { case XmlPullParser.START_TAG : if (parser.getName().equals("item")) { recordImg = parser.getAttributeValue(null, "img1"); recordTitle = parser.getAttributeValue(null, "title"); recordWriter = parser.getAttributeValue(null, "writer"); recordPublish = parser.getAttributeValue(null, "publish"); recordPrice = parser.getAttributeValue(null, "price"); inTitle = true; } break; case XmlPullParser.TEXT : if (inTitle) { recordNum = parser.getText(); mi = new MyItem(recordTitle, recordPrice, recordImg, recordWriter, recordPublish); recordItem.add(mi); inTitle = false; } break; } parserEvent = parser.next(); } } catch (Exception e) { 예외처리 } } catch (Exception e) { 예외처리 } } 알고리즘 적인 부분은 대충 삭제하고 내용이 저런식으로 됩니다. 리스트뷰에 추가되는 형식인데 XML 결과 비교하면서 참고하시는게 좋을것 같네요. 중요한점은 굵게 해놨고 태그를 만났을때, 태그가 시작될때, 태그가 종료될때 등등등 그건 구글에서 찾아보시면 설명나와있을겁니다. |
먼저 답변 감사 드립니다 ^^
DB서버에 바로 붙는거는 추천 방법이 아니였군요... 역시 검색에 답변이 있는거는 이유가 있었던거네요..
말씀 하신데로 일단 java소스를 삽입했습니다.
문법은 잘 모르겠으나 하나하나 보면 해당 php(xml형태)의 노드를 읽어서 변수에 담는 것으로 보입니다.
문서의 끝에 도달할때까지 while 문으로 반복을 시키며...
뭐 이정도록 분석이 되나 java는 안드로이드를 하며 이제 시작하는 단계라 웹개발 보다는 난해하네요 ㅎㅎ;;
현재 작성해주신 소스에서 불필요한 노드를 가져오는 부분을 제외하고 각 변수들을 string 형태로 선언하여 하는 단계이나
new MyItem 이 부분에서 막히네요.. 클래스가 필요하다고 나오는거 같은데...
웹개발은 나름 경력 있어서 안드로이드 공부 해볼겸 도전해 보는데 생각보다 어렵네요 ㅎㅎ
기초단계는 책으로 한번씩 예제로 해본 상태지만 자바라는 장벽이...ㅠ
실례가 안된다면 MyItem class와 또한 recordItem.add 부분에 각 노드의 값을 넣는 형태 같은데 이러한 항목들을 게시물 형태로 표출 할때는 어떠한 형태로 접근 해야 하는지 답변좀 부탁드리겠습니다 ^^;;




안드로이드에서 외부 DB서버에 연결하는것은 좋은 방법이 아닙니다.
그렇게 사용하지말라고 강조하는 글도 있었고요.
php 로 (또는 기타) DB 쿼리 날리셔서 XML로 뽑아내시고
안드로이드에서는 SAX, DOM, xmlPullParser 중 하나로 가져오시면 됩니다.