Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
네트워크 시스템 프로젝트
커뮤니티 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로
C...
DB 테이블 만들기
Char와 Varchar의 차이
CHAR 및 VARCHAR 타입은 여러분이 저장하고자 하는
문자의 최대 숫자를 지정하는 길이와
함께 선언된다. 예를 들면, CHAR(30)은 30개의 문자를
저장할 수...
DB 테이블 만들기
MySQL 한글 입력 방법
Default값이 utf-8값이 아니라서 한글 데이터를 추가하면 ???로 나온다
테이블을 만들때 한글로 받아야 하는 테이블,
항목값의 인코딩을 utf-8로 설정해 주어야 한다
DB테이블 만들기
USE
특정 데이타베이스를 사용하겠다고 선언한다.
JAVA 서버 코드에서 선언을 해야 사용이 가능함
여기서 executeQuery는 데이터베이스로 명령어를 전송해주는 함수
DB 테이블 만들기
INSERT
데이터베이스에 값을 추가 하기 위한 명령어
각 형에 맞게 작성한 뒤 추가하면 됨
String이면 작은 따옴표 안에 작성해야 하고
그 외에는 그냥 작성하면 됨
안에서 MySQL 명령어도 사...
DB 테이블 만들기
SELECT
데이터베이스의 값을 가져오기 위한 명령어
최신의 값, 큰 값을 위로 정렬해서 데이터베이스의 값을 가져옴
studentdb에서 Id가 201131037인 값을 가져옴
Student에서 3번...
Server(java)에서 DB값 불러오기
Project에 Connector/J 라이브러리를 추가
프로젝트 폴더안에 libs 혹은 lib라는 폴더를 만들어 안에 connector J 파일을 넣고
프로젝트 속성에서 jav...
Server(java)에서 DB값 불러오기
Add Jar 가 아니라 Add External Jars 여야만 하는 이유
혼자 개발하면 상관 없음
하지만 팀 작업을 하는 경우에는 개개인마다 workspace가 모두 다름
다...
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 작업 등 을 하나의 클...
TCP / IP
doInBackground에서 스레드가 해야
할 일을 적으면 끝
스레드 외에 핸들러를 사용할 일이
있으면 onPreExecute 등으로 UI제
어를 하면 됨
게시판은 스레드만 쓰면 되기 때문
에 doIn...
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함수를 불러 데이터를 추가
arrLi...
결론
Community List 출력
앞에서 설명한 것을 종합해서 출력한 내용
Q & A
Upcoming SlideShare
Loading in …5
×

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

18,963 views

Published on

android 안드로이드 어플에서의 DB연동
DB setting
커스텀 listview

Published in: Engineering
  • Login to see the comments

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

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

×