SlideShare a Scribd company logo
1 of 32
네트워크 시스템 프로젝트
커뮤니티 PART.
쪼꼬두유
목차:목차
DB 테이블 만들기
Server(java)에서 DB값 불러오기
TCP / IP
커스텀 리스트 뷰 만들기
Q & A
01
02
03
04
05
DB 테이블 만들기
게시판에 필요한 DB
학년별 글 목록
글에 달릴 댓글 목록
DB 테이블 만들기
DB칼럼을 정함
데이터 형도 정해야 함
제목
작성자
작성 시간
이 필요하다고 판단
DB 테이블 만들기
이름은 평균적으로 10byte가 넘지 않을 것 같아서 10byte로 하고
Id는 학번으로 숫자 9개 이기 때문에 9byte로
Title은 25글자 이상 안 넘어 가길 바라는 의미에서 50byte로
Context는 글의 본문이기 때문에 데이터의 크기를 제한하지 않는 text타입으로
Date는 날짜를 받을 수 있는 Datatime으로 선언했다.
DB 테이블 만들기
Char와 Varchar의 차이
CHAR 및 VARCHAR 타입은 여러분이 저장하고자 하는
문자의 최대 숫자를 지정하는 길이와
함께 선언된다. 예를 들면, CHAR(30)은 30개의 문자를
저장할 수가 있다.
CHAR 컬럼의 길이는 여러분이 테이블을
생성할 때 선언한 길이에 고정이 된다. 그
길이는
0 에서 255 사이의 값을 가진다. CHAR 값을
저장할 때에는, 지정된 길이를 맞추기
위해서
오른쪽에 스페이스를 집어 넣게
된다. CHAR 값을 추출할 때에는, 이렇게
추가된 스페이스가
제거된다.
VARCHAR 값은 필요한 문자 수 만큼만을
사용해서 저장되며,
여기에 길이를 기록하는 1 바이트가 추가
된다 (255 보다 긴 길이로 선언된 컬럼에
대해서는
2 바이트가 추가 됨).
DB 테이블 만들기
MySQL 한글 입력 방법
Default값이 utf-8값이 아니라서 한글 데이터를 추가하면 ???로 나온다
테이블을 만들때 한글로 받아야 하는 테이블,
항목값의 인코딩을 utf-8로 설정해 주어야 한다
DB테이블 만들기
USE
특정 데이타베이스를 사용하겠다고 선언한다.
JAVA 서버 코드에서 선언을 해야 사용이 가능함
여기서 executeQuery는 데이터베이스로 명령어를 전송해주는 함수
DB 테이블 만들기
INSERT
데이터베이스에 값을 추가 하기 위한 명령어
각 형에 맞게 작성한 뒤 추가하면 됨
String이면 작은 따옴표 안에 작성해야 하고
그 외에는 그냥 작성하면 됨
안에서 MySQL 명령어도 사용 가능
DB 테이블 만들기
SELECT
데이터베이스의 값을 가져오기 위한 명령어
최신의 값, 큰 값을 위로 정렬해서 데이터베이스의 값을 가져옴
studentdb에서 Id가 201131037인 값을 가져옴
Student에서 3번째부터 1개의 값을 가져옴
Server(java)에서 DB값 불러오기
Project에 Connector/J 라이브러리를 추가
프로젝트 폴더안에 libs 혹은 lib라는 폴더를 만들어 안에 connector J 파일을 넣고
프로젝트 속성에서 java build path로 들어가 Add External Jars 선택해 libs 폴더에
서 참조함
Server(java)에서 DB값 불러오기
Add Jar 가 아니라 Add External Jars 여야만 하는 이유
혼자 개발하면 상관 없음
하지만 팀 작업을 하는 경우에는 개개인마다 workspace가 모두 다름
다른 사람이 svn에서 checkout시 라이
브러리 위치가 달라지기 때문에 build
가 깨지게 됨. 라이브러리 위치를 수
정해야 하는데 ADT 22버전 부터 libs
에 있는 jar들은 android private libraries
로 묶여서 자동으로 build path에 추가
가 된다. 그러면 수정도 제거도 불가
능하게 돼 build가 되지 않는다.
Server(java)에서 DB값 불러오기
getConnection의 첫 번째 파라미터는 데이터베이스의 주소와 포트번호
데이터베이스의 포트번호는 전통적으로 3306을 사용
useUnicode는 데이터를 쓸 때 한글이 ???로 입력되기 때문에
인코딩을 해줘야 해서 넣은 문구이다.
그 외에 남은 파라미터는 데이터베이스의 관리자 아이디와 비밀번호.
Server(java)에서 DB값 불러오기
executeQuery를 통해 DB사용을 시작하고
execute를 통해 명령문을 사용해서 그 결
과를 ResultSet에 저장함
조건에 맞는 data가 없으면 rs.next()가 존재하지 않음
조건문을 만들때 따옴표 같은걸 생략하기 쉬움
조심해서 조건문을 만들어야함
Server(java)에서 DB값 불러오기
칼럼 값끼리 구분하여 저장하기
위해 getNString을 사용하여 String
에 각 값을 저장하고
getTimestamp는 DateTime으로 저
장한 값을 시간 단위까지 가져오
기 위해서 사용함.
TCP / IP
JAVA의 TCP / IP
InputStream이 read
OutputStream이 write
TCP / IP
TCP / IP
TCP / IP
JAVA의 TCP / IP
TCP / IP
JAVA의 TCP / IP
TCP / IP
AsyncTask
Android 4.0 이후부터 threrd로 TCP/IP 접근이 불가능 해짐
AsyncTask로 접근해야 함
AsyncTask는 UI 처리 및 Background 작업 등 을 하나의 클래스에서 작업 할 수
있게 지원해 준다. 쉽게 말해 메인Thread와 일반Thread를 가지고 Handler를 사
용하여 핸들링하지 않아도 AsyncTask 객체 하나로 편하게 UI를 수정 할 수 있
고, Background 작업을 진행 할 수 있다. 각각의 주기마다 CallBack 메서드를 사
용한다.
onPreExecute() : Background 작업 시작전에 UI 작업을 진행 한다.
doInBackground() : Background 작업을 진행 한다.
onPostExecute() : Background 작업이 끝난 후 UI 작업을 진행 한다.
[onPreExecute()] -> [doInBackground()] -> [onPostExecute()] 순으로 진행
TCP / IP
doInBackground에서 스레드가 해야
할 일을 적으면 끝
스레드 외에 핸들러를 사용할 일이
있으면 onPreExecute 등으로 UI제
어를 하면 됨
게시판은 스레드만 쓰면 되기 때문
에 doInBackground만 사용함
TCP / IP
게시판을 학년별로 만들기 때문에
클라이언트에서 서버로 학년을 보내면 서버에서 DB를 읽어서
클라이언트에 다시 보내주는 구조
TCP / IP
주의점
AsyncTask에서 저장한 값을 onCreate
로 가져오려고 static으로 string배열
을 선언한 뒤 onCreate에서 로그를 찍
어봤더니 null로 나옴
TCP / IP
주의점
데이터가 넘어오기 전에 로그를 찍어
서 null값으로 출력된 것.
Sleep을 걸어서 데이터 값이 넘어오는
것을 기다린 다음에 출력해야 함
커스텀 리스트 뷰
리스트를 만들기 위해서는 리스트의 레이아웃을 따로 만들어야 하는데
게시판에 필요한 글 제목, 글쓴이, 글 쓴 시간을 저장할 레이아웃을 만든다.
커스텀 리스트 뷰
처리해야 할 데이터를 쉽게 처리하
기 위해서 클래스로 만들어줌
커스텀 리스트 뷰
BaseAdapter를 상속받아 생성자를 만들어주
고 getCount, getItem, getItemId의 return 값을
설정해준다.
커스텀 리스트 뷰
BaseAdapter를 상속받은 클래스 안에 getView 함수를 오버라이딩 해서 아까 미리
만들어둔 list레이아웃을 inflate시킨 뒤 연결시키는 작업
커스텀 리스트 뷰
출력할 리스트 뷰
BaseAdapter를 상속받은 클래스
데이터를 쉽게 관리하기 위해 만든 클래스를 가진 ArrayList
arrayList를 초기화 한 뒤
.add함수를 불러 데이터를 추가
arrList를 adapte에게 전달
리스트 뷰는 setAdapter로 adapter를 전달받아 출력
결론
Community List 출력
앞에서 설명한 것을 종합해서 출력한 내용
Q & A

More Related Content

What's hot

Django in Production
Django in ProductionDjango in Production
Django in ProductionHyun-woo Park
 
동시성 프로그래밍 기초 in GO
동시성 프로그래밍 기초 in GO 동시성 프로그래밍 기초 in GO
동시성 프로그래밍 기초 in GO 라한사 아
 
Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기Kyoung Up Jung
 
스프링 데이터 레디스 엘라스틱 발표자료
스프링 데이터 레디스 엘라스틱 발표자료스프링 데이터 레디스 엘라스틱 발표자료
스프링 데이터 레디스 엘라스틱 발표자료라한사 아
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs기동 이
 
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼Cheol Kang
 
Python 웹 프로그래밍
Python 웹 프로그래밍Python 웹 프로그래밍
Python 웹 프로그래밍용 최
 
Do not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDYDo not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDYHyun-woo Park
 
robot.txt와 meta tag를 이용한 크롤링 설정
robot.txt와 meta tag를 이용한 크롤링 설정robot.txt와 meta tag를 이용한 크롤링 설정
robot.txt와 meta tag를 이용한 크롤링 설정Yoonsung Jung
 
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011Esun Kim
 
Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.Kyoung Up Jung
 
스프링시큐리티와 소셜연습 이해를 위한 글
스프링시큐리티와 소셜연습 이해를 위한 글스프링시큐리티와 소셜연습 이해를 위한 글
스프링시큐리티와 소셜연습 이해를 위한 글라한사 아
 
Python 으로 Slackbot 개발하기
Python 으로 Slackbot 개발하기Python 으로 Slackbot 개발하기
Python 으로 Slackbot 개발하기성일 한
 
Go revel 구성_루팅_정리
Go revel 구성_루팅_정리Go revel 구성_루팅_정리
Go revel 구성_루팅_정리라한사 아
 
spring data jpa 간단한 튜토리얼
spring data jpa 간단한 튜토리얼spring data jpa 간단한 튜토리얼
spring data jpa 간단한 튜토리얼라한사 아
 
SMARTSTUDY Django 오픈 세션 2012-08
SMARTSTUDY Django 오픈 세션 2012-08SMARTSTUDY Django 오픈 세션 2012-08
SMARTSTUDY Django 오픈 세션 2012-08Hyun-woo Park
 
Node.js
Node.jsNode.js
Node.jsymtech
 
Django개발은 PyCharm에서
Django개발은 PyCharm에서Django개발은 PyCharm에서
Django개발은 PyCharm에서Kyoung Up Jung
 

What's hot (20)

Django in Production
Django in ProductionDjango in Production
Django in Production
 
Node.js intro
Node.js introNode.js intro
Node.js intro
 
동시성 프로그래밍 기초 in GO
동시성 프로그래밍 기초 in GO 동시성 프로그래밍 기초 in GO
동시성 프로그래밍 기초 in GO
 
Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기
 
스프링 데이터 레디스 엘라스틱 발표자료
스프링 데이터 레디스 엘라스틱 발표자료스프링 데이터 레디스 엘라스틱 발표자료
스프링 데이터 레디스 엘라스틱 발표자료
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
 
Django beginning
Django beginningDjango beginning
Django beginning
 
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼
 
Python 웹 프로그래밍
Python 웹 프로그래밍Python 웹 프로그래밍
Python 웹 프로그래밍
 
Do not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDYDo not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDY
 
robot.txt와 meta tag를 이용한 크롤링 설정
robot.txt와 meta tag를 이용한 크롤링 설정robot.txt와 meta tag를 이용한 크롤링 설정
robot.txt와 meta tag를 이용한 크롤링 설정
 
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011
 
Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.
 
스프링시큐리티와 소셜연습 이해를 위한 글
스프링시큐리티와 소셜연습 이해를 위한 글스프링시큐리티와 소셜연습 이해를 위한 글
스프링시큐리티와 소셜연습 이해를 위한 글
 
Python 으로 Slackbot 개발하기
Python 으로 Slackbot 개발하기Python 으로 Slackbot 개발하기
Python 으로 Slackbot 개발하기
 
Go revel 구성_루팅_정리
Go revel 구성_루팅_정리Go revel 구성_루팅_정리
Go revel 구성_루팅_정리
 
spring data jpa 간단한 튜토리얼
spring data jpa 간단한 튜토리얼spring data jpa 간단한 튜토리얼
spring data jpa 간단한 튜토리얼
 
SMARTSTUDY Django 오픈 세션 2012-08
SMARTSTUDY Django 오픈 세션 2012-08SMARTSTUDY Django 오픈 세션 2012-08
SMARTSTUDY Django 오픈 세션 2012-08
 
Node.js
Node.jsNode.js
Node.js
 
Django개발은 PyCharm에서
Django개발은 PyCharm에서Django개발은 PyCharm에서
Django개발은 PyCharm에서
 

Similar to 안드로이드 DB, 서버 연동하기

[NEXT] Android 개발 경험 프로젝트 3일차 (Database)
 [NEXT] Android 개발 경험 프로젝트 3일차 (Database) [NEXT] Android 개발 경험 프로젝트 3일차 (Database)
[NEXT] Android 개발 경험 프로젝트 3일차 (Database)YoungSu Son
 
버클리Db 를 이용한 게임 서버 제작
버클리Db 를 이용한 게임 서버 제작버클리Db 를 이용한 게임 서버 제작
버클리Db 를 이용한 게임 서버 제작Vong Sik Kong
 
[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿AnselmKim
 
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)YoungSu Son
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계Leonardo YongUk Kim
 
All about JDBC Performance Tuning_Wh apm
All about JDBC Performance Tuning_Wh apmAll about JDBC Performance Tuning_Wh apm
All about JDBC Performance Tuning_Wh apm엑셈
 
웹사이트기획 및 관리
웹사이트기획 및 관리웹사이트기획 및 관리
웹사이트기획 및 관리봉조 김
 
NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션흥배 최
 
손쉬운 데이터 연결 방법(라이브바인딩 활용)
손쉬운 데이터 연결 방법(라이브바인딩 활용)손쉬운 데이터 연결 방법(라이브바인딩 활용)
손쉬운 데이터 연결 방법(라이브바인딩 활용)Devgear
 
Spring batch와 함께 하는 TDD
Spring batch와 함께 하는 TDDSpring batch와 함께 하는 TDD
Spring batch와 함께 하는 TDDSanghyuk Jung
 
Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기raccoony
 
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁Yi-kwon Hwang
 
게임을 위한 AWS의 다양한 관리형 Database 서비스 Hands on Lab (김성수 솔루션즈 아키텍트, AWS) :: Gaming ...
게임을 위한 AWS의 다양한 관리형 Database 서비스 Hands on Lab (김성수 솔루션즈 아키텍트, AWS) :: Gaming ...게임을 위한 AWS의 다양한 관리형 Database 서비스 Hands on Lab (김성수 솔루션즈 아키텍트, AWS) :: Gaming ...
게임을 위한 AWS의 다양한 관리형 Database 서비스 Hands on Lab (김성수 솔루션즈 아키텍트, AWS) :: Gaming ...Amazon Web Services Korea
 
Ksh portfolio
Ksh portfolioKsh portfolio
Ksh portfolioSunhoKo2
 
Ibm rational application developer 및 dojo를 사용하여 ajax 웹 애플리케이...
Ibm rational application developer 및 dojo를 사용하여 ajax 웹 애플리케이...Ibm rational application developer 및 dojo를 사용하여 ajax 웹 애플리케이...
Ibm rational application developer 및 dojo를 사용하여 ajax 웹 애플리케이...Jonghyun Park
 
Ibm rational application developer 및 dojo를 사용하여 ajax 웹 애플리케이...
Ibm rational application developer 및 dojo를 사용하여 ajax 웹 애플리케이...Ibm rational application developer 및 dojo를 사용하여 ajax 웹 애플리케이...
Ibm rational application developer 및 dojo를 사용하여 ajax 웹 애플리케이...Jonghyun Park
 
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편Darion Kim
 
RAD Studio 라이브바인딩 이해하기
RAD Studio 라이브바인딩 이해하기RAD Studio 라이브바인딩 이해하기
RAD Studio 라이브바인딩 이해하기Devgear
 

Similar to 안드로이드 DB, 서버 연동하기 (20)

[NEXT] Android 개발 경험 프로젝트 3일차 (Database)
 [NEXT] Android 개발 경험 프로젝트 3일차 (Database) [NEXT] Android 개발 경험 프로젝트 3일차 (Database)
[NEXT] Android 개발 경험 프로젝트 3일차 (Database)
 
버클리Db 를 이용한 게임 서버 제작
버클리Db 를 이용한 게임 서버 제작버클리Db 를 이용한 게임 서버 제작
버클리Db 를 이용한 게임 서버 제작
 
[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿
 
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)
 
Database
DatabaseDatabase
Database
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계
 
All about JDBC Performance Tuning_Wh apm
All about JDBC Performance Tuning_Wh apmAll about JDBC Performance Tuning_Wh apm
All about JDBC Performance Tuning_Wh apm
 
Node week1
Node week1Node week1
Node week1
 
웹사이트기획 및 관리
웹사이트기획 및 관리웹사이트기획 및 관리
웹사이트기획 및 관리
 
NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션
 
손쉬운 데이터 연결 방법(라이브바인딩 활용)
손쉬운 데이터 연결 방법(라이브바인딩 활용)손쉬운 데이터 연결 방법(라이브바인딩 활용)
손쉬운 데이터 연결 방법(라이브바인딩 활용)
 
Spring batch와 함께 하는 TDD
Spring batch와 함께 하는 TDDSpring batch와 함께 하는 TDD
Spring batch와 함께 하는 TDD
 
Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기
 
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
 
게임을 위한 AWS의 다양한 관리형 Database 서비스 Hands on Lab (김성수 솔루션즈 아키텍트, AWS) :: Gaming ...
게임을 위한 AWS의 다양한 관리형 Database 서비스 Hands on Lab (김성수 솔루션즈 아키텍트, AWS) :: Gaming ...게임을 위한 AWS의 다양한 관리형 Database 서비스 Hands on Lab (김성수 솔루션즈 아키텍트, AWS) :: Gaming ...
게임을 위한 AWS의 다양한 관리형 Database 서비스 Hands on Lab (김성수 솔루션즈 아키텍트, AWS) :: Gaming ...
 
Ksh portfolio
Ksh portfolioKsh portfolio
Ksh portfolio
 
Ibm rational application developer 및 dojo를 사용하여 ajax 웹 애플리케이...
Ibm rational application developer 및 dojo를 사용하여 ajax 웹 애플리케이...Ibm rational application developer 및 dojo를 사용하여 ajax 웹 애플리케이...
Ibm rational application developer 및 dojo를 사용하여 ajax 웹 애플리케이...
 
Ibm rational application developer 및 dojo를 사용하여 ajax 웹 애플리케이...
Ibm rational application developer 및 dojo를 사용하여 ajax 웹 애플리케이...Ibm rational application developer 및 dojo를 사용하여 ajax 웹 애플리케이...
Ibm rational application developer 및 dojo를 사용하여 ajax 웹 애플리케이...
 
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
 
RAD Studio 라이브바인딩 이해하기
RAD Studio 라이브바인딩 이해하기RAD Studio 라이브바인딩 이해하기
RAD Studio 라이브바인딩 이해하기
 

More from 은아 정

git의 브렌치 관리 방법
git의 브렌치 관리 방법git의 브렌치 관리 방법
git의 브렌치 관리 방법은아 정
 
2016 페차쿠차 "cppcheck, effective c++과 함께하는 bts"
2016 페차쿠차 "cppcheck, effective c++과 함께하는 bts"2016 페차쿠차 "cppcheck, effective c++과 함께하는 bts"
2016 페차쿠차 "cppcheck, effective c++과 함께하는 bts"은아 정
 
C++ 미정의 행동(undefined behavior)
C++ 미정의 행동(undefined behavior)C++ 미정의 행동(undefined behavior)
C++ 미정의 행동(undefined behavior)은아 정
 
2016.02.20 어쩌다보니 cocos2d x 사용하게 된 이야기 업로드용
2016.02.20 어쩌다보니 cocos2d x 사용하게 된 이야기 업로드용2016.02.20 어쩌다보니 cocos2d x 사용하게 된 이야기 업로드용
2016.02.20 어쩌다보니 cocos2d x 사용하게 된 이야기 업로드용은아 정
 
2015.12.05 쪼꼬두유 방황기
2015.12.05 쪼꼬두유 방황기2015.12.05 쪼꼬두유 방황기
2015.12.05 쪼꼬두유 방황기은아 정
 
2015 데브루키 페차쿠차 "Rim Light(림라이트) 만들기"
2015 데브루키 페차쿠차 "Rim Light(림라이트) 만들기"2015 데브루키 페차쿠차 "Rim Light(림라이트) 만들기"
2015 데브루키 페차쿠차 "Rim Light(림라이트) 만들기"은아 정
 
2015.08.01 회사원쪼꼬두유
2015.08.01 회사원쪼꼬두유2015.08.01 회사원쪼꼬두유
2015.08.01 회사원쪼꼬두유은아 정
 
Unity5 사용기
Unity5 사용기Unity5 사용기
Unity5 사용기은아 정
 
140109 팀프로젝트 협업툴
140109 팀프로젝트 협업툴140109 팀프로젝트 협업툴
140109 팀프로젝트 협업툴은아 정
 
페차쿠차2014 1
페차쿠차2014 1페차쿠차2014 1
페차쿠차2014 1은아 정
 

More from 은아 정 (11)

git의 브렌치 관리 방법
git의 브렌치 관리 방법git의 브렌치 관리 방법
git의 브렌치 관리 방법
 
2016 페차쿠차 "cppcheck, effective c++과 함께하는 bts"
2016 페차쿠차 "cppcheck, effective c++과 함께하는 bts"2016 페차쿠차 "cppcheck, effective c++과 함께하는 bts"
2016 페차쿠차 "cppcheck, effective c++과 함께하는 bts"
 
C++ 미정의 행동(undefined behavior)
C++ 미정의 행동(undefined behavior)C++ 미정의 행동(undefined behavior)
C++ 미정의 행동(undefined behavior)
 
2016.02.20 어쩌다보니 cocos2d x 사용하게 된 이야기 업로드용
2016.02.20 어쩌다보니 cocos2d x 사용하게 된 이야기 업로드용2016.02.20 어쩌다보니 cocos2d x 사용하게 된 이야기 업로드용
2016.02.20 어쩌다보니 cocos2d x 사용하게 된 이야기 업로드용
 
2015.12.05 쪼꼬두유 방황기
2015.12.05 쪼꼬두유 방황기2015.12.05 쪼꼬두유 방황기
2015.12.05 쪼꼬두유 방황기
 
2015 데브루키 페차쿠차 "Rim Light(림라이트) 만들기"
2015 데브루키 페차쿠차 "Rim Light(림라이트) 만들기"2015 데브루키 페차쿠차 "Rim Light(림라이트) 만들기"
2015 데브루키 페차쿠차 "Rim Light(림라이트) 만들기"
 
2015.08.01 회사원쪼꼬두유
2015.08.01 회사원쪼꼬두유2015.08.01 회사원쪼꼬두유
2015.08.01 회사원쪼꼬두유
 
Unity5 사용기
Unity5 사용기Unity5 사용기
Unity5 사용기
 
140109 팀프로젝트 협업툴
140109 팀프로젝트 협업툴140109 팀프로젝트 협업툴
140109 팀프로젝트 협업툴
 
페차쿠차2014 1
페차쿠차2014 1페차쿠차2014 1
페차쿠차2014 1
 
C++ stl
C++ stlC++ stl
C++ stl
 

안드로이드 DB, 서버 연동하기

  • 2. 목차:목차 DB 테이블 만들기 Server(java)에서 DB값 불러오기 TCP / IP 커스텀 리스트 뷰 만들기 Q & A 01 02 03 04 05
  • 3. DB 테이블 만들기 게시판에 필요한 DB 학년별 글 목록 글에 달릴 댓글 목록
  • 4. DB 테이블 만들기 DB칼럼을 정함 데이터 형도 정해야 함 제목 작성자 작성 시간 이 필요하다고 판단
  • 5. DB 테이블 만들기 이름은 평균적으로 10byte가 넘지 않을 것 같아서 10byte로 하고 Id는 학번으로 숫자 9개 이기 때문에 9byte로 Title은 25글자 이상 안 넘어 가길 바라는 의미에서 50byte로 Context는 글의 본문이기 때문에 데이터의 크기를 제한하지 않는 text타입으로 Date는 날짜를 받을 수 있는 Datatime으로 선언했다.
  • 6. DB 테이블 만들기 Char와 Varchar의 차이 CHAR 및 VARCHAR 타입은 여러분이 저장하고자 하는 문자의 최대 숫자를 지정하는 길이와 함께 선언된다. 예를 들면, CHAR(30)은 30개의 문자를 저장할 수가 있다. CHAR 컬럼의 길이는 여러분이 테이블을 생성할 때 선언한 길이에 고정이 된다. 그 길이는 0 에서 255 사이의 값을 가진다. CHAR 값을 저장할 때에는, 지정된 길이를 맞추기 위해서 오른쪽에 스페이스를 집어 넣게 된다. CHAR 값을 추출할 때에는, 이렇게 추가된 스페이스가 제거된다. VARCHAR 값은 필요한 문자 수 만큼만을 사용해서 저장되며, 여기에 길이를 기록하는 1 바이트가 추가 된다 (255 보다 긴 길이로 선언된 컬럼에 대해서는 2 바이트가 추가 됨).
  • 7. DB 테이블 만들기 MySQL 한글 입력 방법 Default값이 utf-8값이 아니라서 한글 데이터를 추가하면 ???로 나온다 테이블을 만들때 한글로 받아야 하는 테이블, 항목값의 인코딩을 utf-8로 설정해 주어야 한다
  • 8. DB테이블 만들기 USE 특정 데이타베이스를 사용하겠다고 선언한다. JAVA 서버 코드에서 선언을 해야 사용이 가능함 여기서 executeQuery는 데이터베이스로 명령어를 전송해주는 함수
  • 9. DB 테이블 만들기 INSERT 데이터베이스에 값을 추가 하기 위한 명령어 각 형에 맞게 작성한 뒤 추가하면 됨 String이면 작은 따옴표 안에 작성해야 하고 그 외에는 그냥 작성하면 됨 안에서 MySQL 명령어도 사용 가능
  • 10. DB 테이블 만들기 SELECT 데이터베이스의 값을 가져오기 위한 명령어 최신의 값, 큰 값을 위로 정렬해서 데이터베이스의 값을 가져옴 studentdb에서 Id가 201131037인 값을 가져옴 Student에서 3번째부터 1개의 값을 가져옴
  • 11. Server(java)에서 DB값 불러오기 Project에 Connector/J 라이브러리를 추가 프로젝트 폴더안에 libs 혹은 lib라는 폴더를 만들어 안에 connector J 파일을 넣고 프로젝트 속성에서 java build path로 들어가 Add External Jars 선택해 libs 폴더에 서 참조함
  • 12. Server(java)에서 DB값 불러오기 Add Jar 가 아니라 Add External Jars 여야만 하는 이유 혼자 개발하면 상관 없음 하지만 팀 작업을 하는 경우에는 개개인마다 workspace가 모두 다름 다른 사람이 svn에서 checkout시 라이 브러리 위치가 달라지기 때문에 build 가 깨지게 됨. 라이브러리 위치를 수 정해야 하는데 ADT 22버전 부터 libs 에 있는 jar들은 android private libraries 로 묶여서 자동으로 build path에 추가 가 된다. 그러면 수정도 제거도 불가 능하게 돼 build가 되지 않는다.
  • 13. Server(java)에서 DB값 불러오기 getConnection의 첫 번째 파라미터는 데이터베이스의 주소와 포트번호 데이터베이스의 포트번호는 전통적으로 3306을 사용 useUnicode는 데이터를 쓸 때 한글이 ???로 입력되기 때문에 인코딩을 해줘야 해서 넣은 문구이다. 그 외에 남은 파라미터는 데이터베이스의 관리자 아이디와 비밀번호.
  • 14. Server(java)에서 DB값 불러오기 executeQuery를 통해 DB사용을 시작하고 execute를 통해 명령문을 사용해서 그 결 과를 ResultSet에 저장함 조건에 맞는 data가 없으면 rs.next()가 존재하지 않음 조건문을 만들때 따옴표 같은걸 생략하기 쉬움 조심해서 조건문을 만들어야함
  • 15. Server(java)에서 DB값 불러오기 칼럼 값끼리 구분하여 저장하기 위해 getNString을 사용하여 String 에 각 값을 저장하고 getTimestamp는 DateTime으로 저 장한 값을 시간 단위까지 가져오 기 위해서 사용함.
  • 16. TCP / IP JAVA의 TCP / IP InputStream이 read OutputStream이 write
  • 19. TCP / IP JAVA의 TCP / IP
  • 20. TCP / IP JAVA의 TCP / IP
  • 21. TCP / IP AsyncTask Android 4.0 이후부터 threrd로 TCP/IP 접근이 불가능 해짐 AsyncTask로 접근해야 함 AsyncTask는 UI 처리 및 Background 작업 등 을 하나의 클래스에서 작업 할 수 있게 지원해 준다. 쉽게 말해 메인Thread와 일반Thread를 가지고 Handler를 사 용하여 핸들링하지 않아도 AsyncTask 객체 하나로 편하게 UI를 수정 할 수 있 고, Background 작업을 진행 할 수 있다. 각각의 주기마다 CallBack 메서드를 사 용한다. onPreExecute() : Background 작업 시작전에 UI 작업을 진행 한다. doInBackground() : Background 작업을 진행 한다. onPostExecute() : Background 작업이 끝난 후 UI 작업을 진행 한다. [onPreExecute()] -> [doInBackground()] -> [onPostExecute()] 순으로 진행
  • 22. TCP / IP doInBackground에서 스레드가 해야 할 일을 적으면 끝 스레드 외에 핸들러를 사용할 일이 있으면 onPreExecute 등으로 UI제 어를 하면 됨 게시판은 스레드만 쓰면 되기 때문 에 doInBackground만 사용함
  • 23. TCP / IP 게시판을 학년별로 만들기 때문에 클라이언트에서 서버로 학년을 보내면 서버에서 DB를 읽어서 클라이언트에 다시 보내주는 구조
  • 24. TCP / IP 주의점 AsyncTask에서 저장한 값을 onCreate 로 가져오려고 static으로 string배열 을 선언한 뒤 onCreate에서 로그를 찍 어봤더니 null로 나옴
  • 25. TCP / IP 주의점 데이터가 넘어오기 전에 로그를 찍어 서 null값으로 출력된 것. Sleep을 걸어서 데이터 값이 넘어오는 것을 기다린 다음에 출력해야 함
  • 26. 커스텀 리스트 뷰 리스트를 만들기 위해서는 리스트의 레이아웃을 따로 만들어야 하는데 게시판에 필요한 글 제목, 글쓴이, 글 쓴 시간을 저장할 레이아웃을 만든다.
  • 27. 커스텀 리스트 뷰 처리해야 할 데이터를 쉽게 처리하 기 위해서 클래스로 만들어줌
  • 28. 커스텀 리스트 뷰 BaseAdapter를 상속받아 생성자를 만들어주 고 getCount, getItem, getItemId의 return 값을 설정해준다.
  • 29. 커스텀 리스트 뷰 BaseAdapter를 상속받은 클래스 안에 getView 함수를 오버라이딩 해서 아까 미리 만들어둔 list레이아웃을 inflate시킨 뒤 연결시키는 작업
  • 30. 커스텀 리스트 뷰 출력할 리스트 뷰 BaseAdapter를 상속받은 클래스 데이터를 쉽게 관리하기 위해 만든 클래스를 가진 ArrayList arrayList를 초기화 한 뒤 .add함수를 불러 데이터를 추가 arrList를 adapte에게 전달 리스트 뷰는 setAdapter로 adapter를 전달받아 출력
  • 31. 결론 Community List 출력 앞에서 설명한 것을 종합해서 출력한 내용
  • 32. Q & A