package com.example.finaltest2021;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "mycontacts.db";
private static final int DATABASE_VERSION = 2;
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE contacts (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, tel TEXT);");
for (int i = 0; i < 10; i++) {
db.execSQL("INSERT INTO contacts VALUES (null, " + "'김철수 "+ i + "'" + ", '010-1234-100" + i + "');");
}
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS data");
onCreate(db);
}
}
db설정 했습니다.
package com.example.finaltest2021;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class MainActivity extends AppCompatActivity {
DBHelper helper;
SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
helper = new DBHelper(this);
db = helper.getWritableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM contacts", null);
startManagingCursor(cursor);
String[] from = {"name", "tel"};
int[] to = {android.R.id.text1, android.R.id.text2};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2,
cursor, from, to);
ListView list = findViewById(R.id.list);
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(getApplicationContext(), ModifyActivity.class);
startActivity(intent);
}
});
}
}
mainactivity에서 db설정한 것을 list뷰로 봅니다.
이름, 전화번호를 수정,업데이트 하는것은 다른 class에서 해야해서 intent를 사용해 화면 전환을 했습니다.
package com.example.finaltest2021;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class ModifyActivity extends AppCompatActivity {
DBHelper helper;
SQLiteDatabase db;
EditText edit_name, edit_tel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.modifyactivity);
helper = new DBHelper(this);
try {
db = helper.getWritableDatabase();
} catch (SQLiteException ex) {
db = helper.getReadableDatabase();
}
edit_name = findViewById(R.id.edtName);
edit_tel = findViewById(R.id.edtTel);
}
public void Update(View view){
String name = edit_name.getText().toString();
String tel = edit_tel.getText().toString();
db.execSQL("UPDATE contacts SET (NULL,'" + name + "', '" + tel + "');" );
edit_name.setText("");
edit_tel.setText("");
}
}
화면 전환하여 수정 버튼을 만들었습니다. onclick 설정은 update로 했습니다.
1. update 구문이 맞나요?
2. 만약 맞다면 업데이트 후 다시 MainActivity로 돌아가서 list뷰에 반영 될 수 있게 하려면 어떤 방법을 써야하나요?