W.A 저장소

Android Database(Sqlite) Instruction 본문

Programing

Android Database(Sqlite) Instruction

W.A 2010. 7. 29. 23:42
TestSQLiteActivity.java

package com.tistory.karyurid.testsqlite;

import android.app.Activity;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class TestSQLiteActivity extends Activity implements View.OnClickListener {
    /** Called when the activity is first created. */
private final String TAG = "SqlTest";
Button btn_InsertData = null;
SQLiteManager sqlManager;
SQLiteDatabase TestDB;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
      // SQLiteManager을 사용하여 DB생성 및 사용가능하게함.
      sqlManager = new SQLiteManager(getBaseContext()); 
      TestDB = sqlManager.getWritableDatabase(); // 앞으로 이 것을 주로하여 사용함.
        
        if( TestDB.isOpen() == false ) Log.w(TAG, "DB not Create");
        else {
         Log.w(TAG, "DB Create");
        }
        
        btn_InsertData = (Button)findViewById(R.id.OK);
        
        btn_InsertData.setOnClickListener(this);
    }
    
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.w(TAG, "Insert Button Click");
             //DB에 데이터를 넣는 방법. 1
   TestDB.execSQL("insert into student (name, student_num)" + "values ('sung', '2401294')");
Log.w(TAG, "Insert Succesed");
}

@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
TestDB.close();
}
}

SQLiteManager.java
package com.tistory.karyurid.testsqlite;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class SQLiteManager extends SQLiteOpenHelper {

private static final String TAG = "SqlTest";
private static final String DATABASE_NAME = "TestDB";
private static final int DATABASE_VERSION = 2;
private static final String DATABASE_CREATE =
"CREATE TABLE student ( _id INTEGER PRIMARY KEY AUTOINCREMENT, "
+ "name TEXT NOT NULL, student_num TEXT NOT NULL);";
public SQLiteManager(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION); //   ?, db name, 커서 팩토리, 스키마 버전
// TODO Auto-generated constructor stub
}

        //처음 DB를 생성하거나 쓰고자 할때 사용됨.
@Override
public void onCreate(SQLiteDatabase database) {
// TODO Auto-generated method stub
// 테이블을 생성하고 초기 데이터를 추가하기 적당
Log.w(TAG, "onCreate() Called");
database.execSQL(DATABASE_CREATE);
}

@Override
public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
database.execSQL("DROP TABLE IF EXISTS rss_data");
onCreate(database);
}
}

main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

<TextView  
   android:layout_width="fill_parent" 
   android:layout_height="wrap_content" 
   android:text="@string/hello"
   android:id="@+id/seletion"
/>
<Button 
android:text="OK" 
android:id="@+id/OK" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content">
</Button>
<ListView 
android:id="@+id/itemlist" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent">
</ListView>

</LinearLayout>

별것도 아니었는데 이상한데서 삽질하고 별 쑈를 다하다가 확실하게 DB가 생성된것을 확인하고 그안에 값이 들어간것을 확인.
확인하는 방법은 직접 에뮬레이터에 접속을 하고 확인을 하는 방법도 있고 DB를 꺼내와서 하는 방법도 있음.

에뮬레이터에 있는 DB를 꺼내오는 방법은
adb pull /data/data/com.tistory.karyurid.testsqlite/databases/TestDB C:/TestDB.db
                                 이곳에는 DB를 생성한 프로젝트명                    생성한DB이름   저장할위치

이렇게 꺼내온뒤 파이어폭스에 Sqlite DB파일을 열어서 확인 가능한 에드온이 있음.
이름은 Sqlite Manager이다. 이곳에서 DB를 열어서 안에 생성된 Table을 확인 할수 있음.

이 외에도 확인가능한 방법은 직접 콘솔창(cmd)에서 에뮬에 접속 후 select, insert등을 직접 할 수도 있음.
확인하는 방법은 android sdk에서 tools에 있는 곳에서 adb shell을 실행하면 

# <-- 이와 같이 프롬프트창이 나옴 이곳에서 위에서 보여준 경로로 찾아감.
/data/data/com.tistory.karyurid.testsqlite/databases <-- 이와 같은 경로

찾아가서 
sqlite3 DB이름 <-- 이렇게 하면 자신이 원한 DB로 접속이 가능함.

들어가서 .help를 치면은 할 수 있는 모든 커멘드들이 보인다.

'Programing' 카테고리의 다른 글

Eclipse + Aptana을 이용한 Web 개발환경 구축  (0) 2010.08.06
Layout 예제 1.  (0) 2010.08.04
Android Spinner  (0) 2010.07.20
Android CheckBox  (0) 2010.07.20
Programming Reference  (0) 2010.07.16