[안드로이드] - SQLiteDatabase 를 이용한 DB 처리
| SQLiteDatabase 를 이용한 DB 처리
※ openOrCreateDatabase() 는 해당 DB가 있으면 열고 없으면 생성한다
※ db.execSQL(sql); 은 select문 빼고는 다 쓴다(delete, update, insert, create 등)
※ select문 사용으로 레코드 조회시 Cursor 클래스 형태로 사용한다
● 데이터베이스 생성
public class MainActivity extends AppCompatActivity {
SQLiteDatabase db;
String dbname = "myDB"; // 생성할 DB 이름을 정함
@Override
protected void onCreate(Bundle savedInstanceState) {
db = openOrCreateDatabase(dbname, MODE_PRIVATE, null); // 해당 DB가 있으면 열고 없으면 생성해라 ( DB이름, 개인모드, 에러핸들러 )
System.out.println("db 생성 완료");
}
● 테이블 생성
public class MainActivity extends AppCompatActivity {
SQLiteDatabase db;
String dbname = "myDB";
String tablename = "customer"; // 생성할 테이블 이름을 정함
String sql;
@Override
protected void onCreate(Bundle savedInstanceState) {
db = openOrCreateDatabase(dbname, MODE_PRIVATE, null); // 해당 DB가 있으면 열고 없으면 생성해라 ( DB이름, 개인모드, 에러핸들러 )
sql = "create table if not exists "+tablename+" (name varchar(20), phone varchar(40), email varchar(40));"; // 테이블을 정의함
db.execSQL(sql); // db를 실행시키기 위해 사용 select 말고는 다 쓴다(delete, update, insert, create)
}
● 레코드 삽입
public class MainActivity extends AppCompatActivity {
String dbname = "myDB";
String tablename = "customer";
EditText input1, input2, input3;
String str_input1, str_input2, str_input3;
String sql;
SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
db = openOrCreateDatabase(dbname, MODE_PRIVATE, null); // DB 생성은 아까 했으니 열기
input3 = (EditText)findViewById(R.id.editText3); // 객체를 생성해서 가져오기(이름, 전화, 이메일)
input2 = (EditText)findViewById(R.id.editText2);
input1 = (EditText)findViewById(R.id.editText1);
}
public void insertClick(View v){ // 클릭했을떄 데이터 삽입 DB연동
try { // DB 관련 코드는 항상 예외처리를 해준다!
str_input1 = input1.getText().toString(); // EditText로 가져온 값은 문자열로 변경하여 저장
str_input2 = input1.getText().toString();
str_input3 = input1.getText().toString();
sql = "insert into "+tablename+"(name, phone, email) values('"+str_input1+"', '"+str_input2+"', '"+str_input3+"');"; // 레코드 삽입
db.execSQL(sql); // 해당 SQL을 db에 실행
textPrint.setText("insert ok ");
System.out.println("insert ok");
} catch (Exception e){
e.printStackTrace();
System.out.println("db error : " + e);
textPrint.setText("db error : " + e);
}
}
}
● 레코드 조회
public class SelectActivity extends AppCompatActivity {
String dbname = "myDB";
String tablename = "customer";
String sql;
SQLiteDatabase db;
TextView textView;
Cursor resultset; // 레코드 조회시(select) 시 Cursor 클래스 형태로 한다
@Override
protected void onCreate(Bundle savedInstanceState) {
db = openOrCreateDatabase(dbname, MODE_PRIVATE, null);
textView = (TextView)findViewById(R.id.textView);
}
public void selectClick(View v){
try {
sql = "select name, phone, email from "+ tablename; // 레코드 조회
resultset = db.rawQuery(sql, null); // select 사용시 사용(sql문, where조건 줬을 때 넣는 값)
int count = resultset.getCount();
for (int i = 0; i < count; i++) {
resultset.moveToNext(); // 첫번째에서 다음 레코드가 없을때까지 읽음
String str_name = resultset.getString(0); // 1번째~3번째 컬럼 값들 읽어 저장
String str_phone = resultset.getString(1);
String str_email = resultset.getString(2);
textView.append(" " + count + " " + str_name + " " + str_phone + " " + str_email);
}
System.out.println("select ok");
} catch (Exception e) {
textView.append("select 에러 " + e);
}
}
}
● 레코드 수정
public class UpdateActivity extends AppCompatActivity {
String dbname = "myDB";
String tablename = "customer";
TextView textPrint;
EditText input1, input2, input3;
String str_input1, str_input2, str_input3;
String sql;
SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
input2 = (EditText)findViewById(R.id.editText2); // 객체를 생성해서 가져오기(이름, 전화)
input1 = (EditText)findViewById(R.id.editText1);
textPrint = (TextView)findViewById(R.id.textPrint);
db = openOrCreateDatabase(dbname, MODE_PRIVATE, null);
}
public void updateClick(View v){
try {
str_input1 = input1.getText().toString();
str_input2 = input2.getText().toString();
sql = "update "+tablename+" set phone = '"+str_input2+"' where name = '"+str_input1+"';"; // 레코드 수정
db.execSQL(sql); // 해당 sql을 db에 실행
textPrint.setText("update ok ");
System.out.println("update ok");
} catch (Exception e){
e.printStackTrace();
System.out.println("db error : " + e);
textPrint.setText("db error : " + e);
}
}
}
● 레코드 삭제
public class DeleteActivity extends AppCompatActivity {
String dbname = "myDB";
String tablename = "customer";
TextView textPrint;
EditText input1;
String str_input1;
String sql;
SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
input1 = (EditText)findViewById(R.id.editText1); // 객체를 생성하여 가져오기(이름)
textPrint = (TextView)findViewById(R.id.textPrint);
db = openOrCreateDatabase(dbname, MODE_PRIVATE, null);
}
public void deleteClick(View v) {
try {
str_input1 = input1.getText().toString();
sql = "delete from " + tablename + " where name = '" + str_input1 + "';"; // 레코드 삭제
db.execSQL(sql); // 해당 sql문을 db에 실행
textPrint.setText("delete ok ");
System.out.println("delete ok");
} catch (Exception e) {
e.printStackTrace();
System.out.println("db error : " + e);
textPrint.setText("db error : " + e);
}
}
}
'안드로이드' 카테고리의 다른 글
[안드로이드] - SQLiteOpenHelper 를 이용한 DB 처리 (0) | 2017.05.22 |
---|---|
[안드로이드] - SQLite select문 ListView로 출력하기 (0) | 2017.05.22 |
[안드로이드] - setOnItemClickListener 이용한 ListView 이벤트 처리 (0) | 2017.05.08 |
[안드로이드] - setOnItemSelectedListener 이용한 Spinner 이벤트 처리 (0) | 2017.05.08 |
[안드로이드] - VideoView + MediaController 이용한 동영상 재생 (0) | 2017.05.01 |