●sqlite
- 안드로이드 로컬에서 사용하는 database이다.
- 실제 스마트폰 단말기 내의 data/data/database경로에 파일이 만들어지게된다.
에뮬레이터를 실행하고 DDMS에 들어가면 파일 구조를 볼수 있다.(실제 핸드폰으로 연결하면 파일구조를 다 보지 못하도록 막혀있다.)
- 안드로이드 스마트폰은 보안상 접근을 허용하지 않는다. 따라서 개발자가 만일 sqlite 파일등을 스마트폰에 넣으려 할때, gui모드로 지원되는 DDMS는 사용할 수 없다.DDMS는 에뮬레이터에서만 의미가 있다. 안드로이드의 sqlite 관련 패키지에는 개발자가 데이터베이스 관리할 수 있는 여러 객체들을 지원해주므로, 실제 개발시엔 GUI모드로 하지말고 프로그래밍으로 처리한다.
●예제
- DatabaseMain.java
package study.db; import com.example.day0404.R; import android.app.Activity; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.widget.TextView; public class DatabaseMain extends Activity{
String a=""; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.test); //데이터베이스 구축 전담 객체를 사용하여 sqlite db를 생성 MyOpenHelper helper = new MyOpenHelper(this);
TextView tb = (TextView)findViewById(R.id.a);
//생성자 호출만으로는 db구축이 안되고 있다. //실제 db구축이 되는 시점은 SQLiteDatabase객체를 //얻기위해 호출되는 메서드인 getReadableDatabase(), //getWritableDatabase()메서드를 호출하는 시점이다.
//실제 스마트폰 단말기 내의 data/data/database경로에 파일이 만들어지게된다. SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("insert into member(name, money, etc) values ('apple', 10000, 'a');");
//데이터데이스의 데이터를 그대로 메모리상에 올려놓은 객체자 Cursor이다. Cursor rs = db.rawQuery("select * from member;", null);
while(rs.moveToNext()){ System.out.println("데이터있음:"+rs.getString(0)); a = a+rs.getString(0); } tb.setText(a); } }
|
- MyOpenHelper.java
package study.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; import android.widget.Toast; public class MyOpenHelper extends SQLiteOpenHelper{ Context context; public MyOpenHelper(Context context) { //2번째 인자는 만들어지는 sqlite파일 이름이고 4번째 인자는 개발자가 만든 sqlite버전이다. super(context, "data.sqlite", null, 1); this.context = context;
}
//최초에 기존에 없었던 db가 새롭게 만들어질때 1번 호출 public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE member (name VARCHAR(20), money INTEGER, etc VARCHAR(50));");
} //이미 배포했던 db에 변경이 있을경우 호출된다. //주로 버전의 변경이 있을때 호출 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("CREATE TABLE member (name VARCHAR(20), money INTEGER, etc VARCHAR(50));");
} }
|
- test.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >
<TextView android:id="@+id/a" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout>
|
'프로그래밍 > 안드로이드' 카테고리의 다른 글
안드로이드 ViewPager, SQLite 예제 소스 (0) | 2015.04.25 |
---|---|
안드로이드 오픈소스 ViewPagerIndicator (0) | 2015.04.15 |
안드로이드 뷰페이저(ViewPager) (0) | 2015.04.07 |
안드로이드 액션바 (ActionBar) (0) | 2015.04.01 |
안드로이드 프래그먼트(Fragment) (0) | 2015.04.01 |
댓글