ݺߣ

ݺߣShare a Scribd company logo
네트워크 시스템 프로젝트
커뮤니티 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
Ad

Recommended

[NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기
YoungSu Son
Parse.com 맛보기
Parse.com 맛보기
flashscope
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기 기초
Kwangyoun Jung
PHP로 Slack Bot 만들기
PHP로 Slack Bot 만들기
Changwan Jun
쉽게 쓰여진 Django
쉽게 쓰여진 Django
Taehoon Kim
휴봇-슬랙 OSX 설치
휴봇-슬랙 OSX 설치
Juneyoung Oh
Light Tutorial Django
Light Tutorial Django
Kwangyoun Jung
Django in Production
Django in Production
Hyun-woo Park
Node.js intro
Node.js intro
Chul Ju Hong
동시성 프로그래밍 기초 in GO
동시성 프로그래밍 기초 in GO
라한사 아
Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기
Kyoung Up Jung
스프링 데이터 레디스 엘라스틱 발표자료
스프링 데이터 레디스 엘라스틱 발표자료
라한사 아
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
기동 이
Django beginning
Django beginning
Woojing Seok
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼
[PyConKR 2014] 30분만에 따라하는 동시성 스크래퍼
Cheol Kang
Python 웹 프로그래밍
Python 웹 프로그래밍
용 최
Do not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDY
Hyun-woo Park
robot.txt와 meta tag를 이용한 크롤링 설정
robot.txt와 meta tag를 이용한 크롤링 설정
Yoonsung Jung
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011
Esun Kim
Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.
Kyoung Up Jung
스프링시큐리티와 소셜연습 이해를 위한 글
스프링시큐리티와 소셜연습 이해를 위한 글
라한사 아
Python 으로 Slackbot 개발하기
Python 으로 Slackbot 개발하기
성일 한
Go revel 구성_루팅_정리
Go revel 구성_루팅_정리
라한사 아
spring data jpa 간단한 튜토리얼
spring data jpa 간단한 튜토리얼
라한사 아
SMARTSTUDY Django 오픈 세션 2012-08
SMARTSTUDY Django 오픈 세션 2012-08
Hyun-woo Park
Node.js
Node.js
ymtech
[NEXT] Android 개발 경험 프로젝트 3일차 (Database)
[NEXT] Android 개발 경험 프로젝트 3일차 (Database)
YoungSu Son
Database
Database
Nam Hyeonuk

More Related Content

What's hot (20)

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

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

[NEXT] Android 개발 경험 프로젝트 3일차 (Database)
[NEXT] Android 개발 경험 프로젝트 3일차 (Database)
YoungSu Son
Database
Database
Nam Hyeonuk
SQLite Example
SQLite Example
MinGi KYUNG
16 데이터 저장과 사용
16 데이터 저장과 사용
운용 최
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
탑크리에듀(구로디지털단지역3번출구 2분거리)
Java advancd ed10
Java advancd ed10
hungrok
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
탑크리에듀(구로디지털단지역3번출구 2분거리)
성공적인웹프로그래밍
성공적인웹프로그래밍
dgmong
파이썬 데이터베이스 연결 1탄
파이썬 데이터베이스 연결 1탄
SeongHyun Ahn
03주차 ddl- table을 만들자
03주차 ddl- table을 만들자
Yoonwhan Lee
All about JDBC Performance Tuning_Wh apm
All about JDBC Performance Tuning_Wh apm
엑셈
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)
YoungSu Son
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
DK Lee
MySQL 기초
MySQL 기초
Yoonwhan Lee
Java Annotation과 MyBatis로 나만의 ORM Framework을 만들어보자
Java Annotation과 MyBatis로 나만의 ORM Framework을 만들어보자
Donghyeok Kang
Daejeon IT Developer Conference iBATIS2
Daejeon IT Developer Conference iBATIS2
plusperson
PHP 웹 서버 구축
PHP 웹 서버 구축
SeolHoon
Web Server Construction team project
Web Server Construction team project
ParkGwanYong
[NEXT] Android 개발 경험 프로젝트 3일차 (Database)
[NEXT] Android 개발 경험 프로젝트 3일차 (Database)
YoungSu Son
16 데이터 저장과 사용
16 데이터 저장과 사용
운용 최
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#16.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
탑크리에듀(구로디지털단지역3번출구 2분거리)
Java advancd ed10
Java advancd ed10
hungrok
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
탑크리에듀(구로디지털단지역3번출구 2분거리)
성공적인웹프로그래밍
성공적인웹프로그래밍
dgmong
파이썬 데이터베이스 연결 1탄
파이썬 데이터베이스 연결 1탄
SeongHyun Ahn
03주차 ddl- table을 만들자
03주차 ddl- table을 만들자
Yoonwhan Lee
All about JDBC Performance Tuning_Wh apm
All about JDBC Performance Tuning_Wh apm
엑셈
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)
YoungSu Son
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
DK Lee
Java Annotation과 MyBatis로 나만의 ORM Framework을 만들어보자
Java Annotation과 MyBatis로 나만의 ORM Framework을 만들어보자
Donghyeok Kang
Daejeon IT Developer Conference iBATIS2
Daejeon IT Developer Conference iBATIS2
plusperson
PHP 웹 서버 구축
PHP 웹 서버 구축
SeolHoon
Web Server Construction team project
Web Server Construction team project
ParkGwanYong
Ad

More from 은아 정 (11)

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

안드로이드 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