src/ kr.android.sqlite / SQListDemo
res / values/string.xml
package kr.android.sqlite; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class DatabaseAdapter { /*=-=-=-=-=-=-=-=-상수 정의 시작=-=-=-=-=-=-=-=-*/ //Log 처리를 위한 TAG지정 static final String TAG = "DatabaseHandler"; //데이터 베이스 파일이름 static final String DB_NAME ="daily_memo.db"; //테이블 이름 static final String TABLE_NAME="daily_memo"; //데이터베이스 각열의 이름 static final String MEMO_ID="_id"; static final String MEMO_CONTENT="content"; //컬럼 인덱스 static final int ID_INDEX= 0; static final int CONTENT_INDEX =1; //컬럼 명세 static final String[] PROJECTION = new String[] {MEMO_ID,MEMO_CONTENT}; //테이블 생성 SQL static final String CREATE_TABLE ="CREATE table "+TABLE_NAME+" ("+MEMO_ID+" " + "integer primary key autoincrement, "+MEMO_CONTENT+" text not null);"; //테이블 삭제 SQL static final String DROP_TABLE = "DROP TABLE IF EXISTS "+TABLE_NAME+";"; /*=-=-=-=-=-=-=-=-상수 정의 끝=-=-=-=-=-=-=-=-*/ //데이터 베이스 연동 객체 private SQLiteDatabase db; //데이터 베이스를 이용하는 어플리케이션의 컨텍스트 private Context context; public DatabaseAdapter(Context context){ this.context=context; } //SQLiteDatabase 생성 public void open() throws SQLException{ try{ db =(new DatabaseHelper(context)).getWritableDatabase(); }catch(SQLiteException e){ db =(new DatabaseHelper(context)).getReadableDatabase(); } } //SQLiteDatabase 자원정리 public void Close(){ db.close(); } //전체 행을 ID의 내림차순으로 호출 public Cursor fetchAllMemo(){ return db.query(TABLE_NAME, //테이블명 PROJECTION, //컬럼명세 null, //where 절 null, //where 절에 전달될 데이터 null, //group by null, //having MEMO_ID + " DESC " //order by ); } //업데이트 public void setMemo(String id, String content){ //업데이트 값 설정 ContentValues values = new ContentValues(); //데이터 등록(컬럼명 , 수정할 데이터) values.put(MEMO_CONTENT, content); //행을 업데이트 db.update(TABLE_NAME, //테이블 명 values, //수정할 데이터 MEMO_ID + " = ?", //where절 new String[]{ id } //where절 ?에 전달될 primary key ); } //검색 public String searchMemo(String str){ //읽을 데이터의 조건 String where = MEMO_CONTENT+" like ?"; //where의 ?을 대체할 매개 변수 String param = str.substring(0,1) + "%"; //검색 Cursor c = db.query( TABLE_NAME, PROJECTION, where, //WHERE new String[] { param }, //LIKE null, //GROUP BY null, //HAVING MEMO_ID+ " DESC", //ORDERED BY 새로운 정렬 "10"); //LIMIT 최대 10개 StringBuffer buff = new StringBuffer(); if(c.moveToFirst()){ //검색 결과를 차례로 꺼내 문자열에 추가 do{ long id = c. getLong(ID_INDEX); buff.append("id(").append(id).append(") "); String memo = c.getString(CONTENT_INDEX); buff.append(memo).append("\n"); }while(c.moveToNext()); } c.close(); return buff.toString(); } //데이터를 추가하고 추가된 데이터의 primary key(_id)반환 public String addMemo(String content){ ContentValues values = new ContentValues(); values.put(MEMO_CONTENT, content); long id =db.insert(TABLE_NAME, MEMO_CONTENT, values); if(id < 0){ return ""; } return Long.toString(id); } //지정된 ID의 행삭제 public void deleteMemo(String id){ db.delete(TABLE_NAME, //테이블명 MEMO_ID + " = ?", //where절 new String[] { id } //where절 ? 에 전달될 데이터 ); } /*=-=-=--=-=-=-=-=-=SQLiteOPenHelper를 상속받아 구현한 클래스=-=-=-=-=-=-=-=-*/ public class DatabaseHelper extends SQLiteOpenHelper{ public DatabaseHelper(Context context){ super(context, DB_NAME, null, 1); } //데이터 베이스를 새로 만든 다음 호출 public void onCreate(SQLiteDatabase db){ //내부에 테이블 만들기 db.execSQL(CREATE_TABLE); } //존재하는 데이터 베이스로 정의하고 있는 버전이 다를때 super(context, DB_NAME, null, 1); -> 2 public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){ Log.w(TAG,"Version mismatch : "+oldVersion+" to "+newVersion); //여기에서는 테이블을 삭제하고 새로 작성함 //일반적으로 테이블의 데이터 변환을 수행 db.execSQL(DROP_TABLE); onCreate(db); } } }
package kr.android.sqlite; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class DatabaseAdapter { /*=-=-=-=-=-=-=-=-상수 정의 시작=-=-=-=-=-=-=-=-*/ //Log 처리를 위한 TAG지정 static final String TAG = "DatabaseHandler"; //데이터 베이스 파일이름 static final String DB_NAME ="daily_memo.db"; //테이블 이름 static final String TABLE_NAME="daily_memo"; //데이터베이스 각열의 이름 static final String MEMO_ID="_id"; static final String MEMO_CONTENT="content"; //컬럼 인덱스 static final int ID_INDEX= 0; static final int CONTENT_INDEX =1; //컬럼 명세 static final String[] PROJECTION = new String[] {MEMO_ID,MEMO_CONTENT}; //테이블 생성 SQL static final String CREATE_TABLE ="CREATE table "+TABLE_NAME+" ("+MEMO_ID+" " + "integer primary key autoincrement, "+MEMO_CONTENT+" text not null);"; //테이블 삭제 SQL static final String DROP_TABLE = "DROP TABLE IF EXISTS "+TABLE_NAME+";"; /*=-=-=-=-=-=-=-=-상수 정의 끝=-=-=-=-=-=-=-=-*/ //데이터 베이스 연동 객체 private SQLiteDatabase db; //데이터 베이스를 이용하는 어플리케이션의 컨텍스트 private Context context; public DatabaseAdapter(Context context){ this.context=context; } //SQLiteDatabase 생성 public void open() throws SQLException{ try{ db =(new DatabaseHelper(context)).getWritableDatabase(); }catch(SQLiteException e){ db =(new DatabaseHelper(context)).getReadableDatabase(); } } //SQLiteDatabase 자원정리 public void Close(){ db.close(); } //전체 행을 ID의 내림차순으로 호출 public Cursor fetchAllMemo(){ return db.query(TABLE_NAME, //테이블명 PROJECTION, //컬럼명세 null, //where 절 null, //where 절에 전달될 데이터 null, //group by null, //having MEMO_ID + " DESC " //order by ); } //업데이트 public void setMemo(String id, String content){ //업데이트 값 설정 ContentValues values = new ContentValues(); //데이터 등록(컬럼명 , 수정할 데이터) values.put(MEMO_CONTENT, content); //행을 업데이트 db.update(TABLE_NAME, //테이블 명 values, //수정할 데이터 MEMO_ID + " = ?", //where절 new String[]{ id } //where절 ?에 전달될 primary key ); } //검색 public String searchMemo(String str){ //읽을 데이터의 조건 String where = MEMO_CONTENT+" like ?"; //where의 ?을 대체할 매개 변수 String param = str.substring(0,1) + "%"; //검색 Cursor c = db.query( TABLE_NAME, PROJECTION, where, //WHERE new String[] { param }, //LIKE null, //GROUP BY null, //HAVING MEMO_ID+ " DESC", //ORDERED BY 새로운 정렬 "10"); //LIMIT 최대 10개 StringBuffer buff = new StringBuffer(); if(c.moveToFirst()){ //검색 결과를 차례로 꺼내 문자열에 추가 do{ long id = c. getLong(ID_INDEX); buff.append("id(").append(id).append(") "); String memo = c.getString(CONTENT_INDEX); buff.append(memo).append("\n"); }while(c.moveToNext()); } c.close(); return buff.toString(); } //데이터를 추가하고 추가된 데이터의 primary key(_id)반환 public String addMemo(String content){ ContentValues values = new ContentValues(); values.put(MEMO_CONTENT, content); long id =db.insert(TABLE_NAME, MEMO_CONTENT, values); if(id < 0){ return ""; } return Long.toString(id); } //지정된 ID의 행삭제 public void deleteMemo(String id){ db.delete(TABLE_NAME, //테이블명 MEMO_ID + " = ?", //where절 new String[] { id } //where절 ? 에 전달될 데이터 ); } /*=-=-=--=-=-=-=-=-=SQLiteOPenHelper를 상속받아 구현한 클래스=-=-=-=-=-=-=-=-*/ public class DatabaseHelper extends SQLiteOpenHelper{ public DatabaseHelper(Context context){ super(context, DB_NAME, null, 1); } //데이터 베이스를 새로 만든 다음 호출 public void onCreate(SQLiteDatabase db){ //내부에 테이블 만들기 db.execSQL(CREATE_TABLE); } //존재하는 데이터 베이스로 정의하고 있는 버전이 다를때 super(context, DB_NAME, null, 1); -> 2 public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){ Log.w(TAG,"Version mismatch : "+oldVersion+" to "+newVersion); //여기에서는 테이블을 삭제하고 새로 작성함 //일반적으로 테이블의 데이터 변환을 수행 db.execSQL(DROP_TABLE); onCreate(db); } } }
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, SQLiteDemo!</string> <!-- 응용 프로그램 이름 --> <string name="app_name">SQLiteDemo</string> <!-- 등록된 메모가없는 경우에 대한 설명 --> <string name="no_memo">메모가없습니다</string> <!-- 버튼의 표시 문자열 --> <string name="delete_label">삭제</string> <string name="modify_label">변경</string> <string name="add_label">추가</string> <!-- ID 편집 텍스트 상자에 표시되는 팁 --> <string name="id_label">ID</string> </resources>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" > <!-- ID 문자열 표시(수정/삭제시 해당 primary key 표시) --> <TextView android:id="@+id/view_id" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="@string/id_label" android:width="50dp" /> <!-- 데이터 입력 (등록/수정/삭제) --> <EditText android:id="@+id/edit_memo" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> <!-- 등록/수정 삭제 버튼 --> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" > <Button android:id="@+id/delete_button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="@string/delete_label" /> <Button android:id="@+id/modify_button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="@string/modify_label" /> <Button android:id="@+id/add_button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="@string/add_label" /> </LinearLayout> <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:choiceMode="singleChoice" /> <!-- ListView에 표시할 데이터가 없을 때 아래 위젯이 보여짐 --> <TextView android:id="@android:id/empty" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/no_memo" /> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <!-- memo_row.xml --> <!-- 목록보기 1 줄에 배치 --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" > <!-- ID가 표시되는 텍스트 뷰 --> <TextView android:id="@+id/_id" android:layout_width="50dp" android:layout_height="wrap_content" /> <!-- 메모보기 텍스트 뷰 --> <TextView android:id="@+id/memo_text" android:padding="5px" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
data > data > 자신의 패키지명 > databases > 파일 저장 해서 보려면은 바로 이 이미지 위에 디스켓 모양이 있는데 파일 선택후 그것을 클릭하면 됩니다.
'Android > 기본' 카테고리의 다른 글
안드로이드 프로세스 말끔히 죽이기 (0) | 2012.04.28 |
---|---|
Xml 가져오기 (날씨) (0) | 2012.04.28 |
터치해서 화면 전환 Flipper Touch (0) | 2012.04.28 |
ListIcon (ListView에 아이콘,버튼) (0) | 2012.04.28 |
News Service 주기적으로 데이터 가지고 오기 (0) | 2012.04.28 |