차근차근/Android

[ study ] 다이어리 어플 만들어보기 1 - 부가 설명 3

예쁜꽃이피었으면 2015. 4. 24. 10:55

execSQL

http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#execSQL(java.lang.String)

ExecSQL은 추가, 수정 ,삭제를 실행시키라는 의미 

때문에 ExecSQ:로 DB를 변경해도 변경된 데이터를 보기 위해선 다시 open을 해야 한다.



newview bindview


[팁] 커스텀 CursorAdapter 사용법

http://www.androidpub.com/591578



bindView와 newView와 getView의 차이점이 뭔가요?

http://www.androidpub.com/207792




What bindView() and newView() do in CursorAdapter

http://stackoverflow.com/questions/12672749/what-bindview-and-newview-do-in-cursoradapter




LayoutInflater

LayoutInflater의 개념 정리

http://dyecolor.tistory.com/80

- xml문서에 적의된 layout을 읽어 실제 뷰 객체를 생성하는 역할을 한다.

-> xml문서를 직접 읽어 해석할 수 없기 때문에 컴파일된 리소스(뷰 객체)를 넘겨줘야 된다.


안드로이드/Android LayoutInflater 사용 방법 ~!

http://arabiannight.tistory.com/353


[Android/안드로이드] LayoutInflater와 Inflate 에 대해 알아보아요.

http://aroundck.tistory.com/39




검색어 : 

sqlite sequence number

sqlite sequence row number

autoincrement sqlite android , 사용 필드

AUTOINCREMENT , 키에만사용?


자동증가 값을 주기 위해서

오라클에서는 sequence라는 걸 사용하고

mysql에서는 auto_increment라는 걸 쓰고

sqlite에서는 autoincrement를 쓴다고 한다.


지금 안드로이드에서 sqlite를 사용하고 있는데 테이블의 첫번째 칼럼에 _id를 주고 autoincrement를 해둔 상태이다.

그런데 _id의 값을.. 출력하고 싶은데 음.. 방법은 있는 것 같으나 적용이 안되고 있다.

그래서 다른 칼럼을 새로 만들고 (테이블 수정) 숫자를 주고 autoincrement를 하려고 했다.

그러니까 .. autoincrement를 pk에만 사용해야 하는지를 알고 싶었다.

답은. 안됨. 

자동증가 필드의 지정

자동증가 필드를 지정하고자 할 경우에는 autoincrement 옵션을 사용합니다.
MySQL에서는 auto_increment 라고 지정해 주었었는데 SQLite에서는 밑줄(_)이 사라졌습니다.

sqlite.org에서 말하는 autoincrement 속성을 부여할 수 있는 필드는 숫자-not null-primary key 의 조건이 주어진 필드에만 적용할 수 있다고 소개하고 있습니다.

예를 들어서 일련번호 필드(NUM)을 기본키, 널 비허용, 자동 증가로 지정하게 되면 아래와 같이 표현이 됩니다.

1
2
3
4
CREATE TABLE MyMemo (
    NUM integer not null primary key autoincrement,
    MEMO text not null
);

[SQLite] 데이터 타입과 자동증가 필드

http://itpaper.co.kr/?mid=android&document_srl=1818&listStyle=viewer


그러나 수동으로 하는 방법이 있다고 함.

http://stackoverflow.com/questions/15104932/how-to-use-one-sequence-for-all-table-in-sqlite


Unfortunately, you cannot do this: SQLite automatically creates sequences for each table in special sqlite_sequence service table.

And even if you somehow forced it to take single sequence as source for all your tables, it would not work the way you expect. For example, in PostgreSQL or Oracle, if you set sequence to value say 1 but table already has filled rows with values 1,2,..., any attempt to insert new rows using that sequence as a source would fail with unique constraint violation.

In SQLite, however, if you manually reset sequence using something like:

UPDATE sqlite_sequence SET seq = 1 WHERE name = 'mytable'

and you already have rows 1,2,3,..., new attempts to insert will NOT fail, but automatically assign this sequence maximum existing value for appropriate auto-increment column, so it can keep going up.

Note that you can use this hack to assign starting value for the sequence, however you cannot make it stop incrementing at some value (unless you watch it using other means).


반응형