2011-08-08 4 views
5

저는 응용 프로그램에서 데이터베이스를 사용하는 것에 익숙하지 않으므로 약간의 지침이 필요합니다.안드로이드에서 SQLite에 문자열 모음을 저장하는 방법은 무엇입니까?

필자는 여러 프리미티브 필드와 String 및 ArrayList 객체에 대한 여러 참조가있는 Java 객체를 사용합니다. 프리미티브와 문자열은 사용 가능한 SQLite 필드에 잘 맵핑되지만 ArrayLists를 유지하는 방법을 잘 모르겠습니다.

나는 두 가지 아이디어를 접대했다. 그 중 하나는 ArrayList를 직렬화하고 텍스트 필드에 저장하는 것이고, 다른 하나는 개별 문자열을 저장할 수있는 1을 가진 테이블을 가리키는 컬럼을 갖는 것이다 ,하지만 안드로이드에서 이것을 구현하는 방법에 대한 확신이 없습니다. 나는 다른 접근법에 대해 개방적이지만, SQLite를 사용하여 자바에서 후자를 구현하는 방법을 알지 못한다. 그래서 해결책은 멋질 것이다. 감사.

답변

7

일반적으로 (내가 배웠던 것에서) 개체 자체에 다른 개체의 목록이 포함되어 있으면 1 대 다수 (또는 잠재적으로 다수 대 다수) 관계가됩니다. 이 데이터를 저장하려면 다른 테이블을 사용하고 싶을 것입니다. 다른 테이블에는 개체에 대한 기본 키가 있고 그 개체가 속한 부모 개체를 참조하는 외래 키가 있습니다. 더 자세한 설명은 this 링크를 참조하십시오.

예 :

CREATE TABLE User (
    _id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
    name TEXT 

); 

CREATE TABLE UserPicture(
    _id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
    userId INTEGER, 
    path TEXT 

FOREIGN KEY(userId) REFERENCES User(_id) 
); 

지금 데이터베이스에 저장할 때 각 사진을 반복하고 UserPicture에 각 하나를 삽입 할 것입니다, 당신은 'UserPictures의 목록으로, 사용자 개체가 있다고 가정 해 사용자 테이블로 돌아 가기 링크로 userId를 사용하십시오.

many-to-many 관계의 인스턴스에서 각 Object는 자신의 children 객체의 List를가집니다. 더 좋은 예는 Membership/Role 시스템입니다. 사용자는 역할 목록을 가지며 역할은 은 사용자 목록을 가질 수 있습니다. 사용자는 (일반적으로) 여러 역할을 수행 할 수 있고 역할은 물론 복수 사용자가 일 수 있기 때문입니다. 이것은 단순히 내가 생각하는 조인 테이블이라고하는 것을 요구할 것입니다. UserInRole은 사용자 X가 역할 Y에 속해 있음을 표시하는 UserID와 RoleID라는 두 개의 열을 갖습니다.

구현 방법은 'Android sqlite tutorial'을 검색하십시오. Herehere은 sqlite android 데이터베이스 앱을 설정하는 방법에 대한 자습서가있는 두 개의 링크입니다.

+0

곧 게시 할 예정입니다. – Jack

+0

'path TEXT'다음에'','',''가 없습니다. – Weekend

9

자세한 내용을 알지 못했지만이 작업을 수행하는 교과서 방법은 배열 목록에 대한 두 번째 테이블을 만든 다음 배열 목록에 기본 레코드의 ID를 포함시키는 것입니다.

create table person (personid int, name varchar(30), age int); 
create table hobby (hobbyid int, personid int, description varchar(30)); 

를 다음 데이터가 다음과 같습니다 :

Person 
11 Bob 18 
12 Sally 68 
13 Ford 42 

Hobby 
21 11 fishing 
22 11 hunting 
23 12 needlepoint 
24 12 rock-climbing 
25 13 hitch-hiking 

것은 얻으려면

예를 들어, 개체 당신은 다음과 같은 테이블을 만드는 것

String name; 
int age; 
ArrayList<String> hobbies; 

구성 가정 다른 사람의 취미 목록에 다음과 같은 검색어를 사용하십시오.

select person.name, hobby.description 
from person 
join hobby on person.personid=hobby.personid 
관련 문제