Android

안드로이드 Database Insert

로픽 2017. 6. 2. 02:17
300x250

안드로이드 Database Insert

SQLiteDatabase - 안드로이드에서 사용하는 경량의 데이터베이스 객체입니다.
디바이스에 데이터가 저장되며 경량의 데이터베이스로 디바이스에서 효율적으로 작동합니다.

** MainActivity
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setTitle("고객 등록 database");
    }

    public void clickOn(View v){
        if(v.getId() == R.id.button1){
            Intent intent = new Intent(this, insertActivity.class);
            startActivity(intent);
        }else if(v.getId() == R.id.button2){
            Intent intent = new Intent(this, selectActivity.class);
            startActivity(intent);
        }else if(v.getId() == R.id.button3){
            Intent intent = new Intent(this, UpdateActivity.class);
            startActivity(intent);
        }else{
            Intent intent = new Intent(this, DeleteActivity.class);
            startActivity(intent);
        }
    }
}


인텐트를 이용하여 현재 액티비티에서 다음 액티비티로 전환을 합니다.



** activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:gravity="center"
android:orientation="vertical"
tools:context="com.example.dmbtv.databasehomework.MainActivity">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="초기화면"
android:layout_marginBottom="10dp"/>
<Button
android:id="@+id/button1"
android:text="삽입"
android:onClick="clickOn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"/>
<Button
android:id="@+id/button2"
android:text="조회"
android:onClick="clickOn"
android:clickable="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"/>
<Button
android:id="@+id/button3"
android:text="수정"
android:onClick="clickOn"
android:clickable="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"/>
<Button
android:id="@+id/button4"
android:text="삭제"
android:onClick="clickOn"
android:clickable="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>

각각의 해당 버튼을 이용하여 db기능을 실행할 예정입니다.


나머지 다른 버튼은 이후에 추가할려고 합니다.



** InsertActivity

public class insertActivity extends AppCompatActivity {

    SQLiteDatabase database;
    TextView output;
    String sql;
    EditText nameText, emailText, phoneText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_insert);
        setTitle("고객등록 - 삽입");

        output = (TextView)findViewById(R.id.textView1);
    }

    public void createDB(View v){   //테이블 생성 리스너
        try{    //데이터베이스는 예외가 발생할 수 있기 때문에 try catch 이용
            database = openOrCreateDatabase("mydb", MODE_PRIVATE, null);    //MODE_PRIVATE 다른 클래스에서 접근 불가능, 객체 생성
            sql = "create table if not exists mytable1(name  text, email text, phone text);";
            database.execSQL(sql);
            output.setText("데이터베이스 생성 완료!\n");
            output.append(" 테이블 생성 완료!" + "\n");
        }catch(Exception e){
            output.setText("데이터베이스 및 테이블 에러 발생" + e);
            System.out.println("db error!" + e);
        }
    }

    public void insertDB(View v){

        nameText = (EditText) findViewById(R.id.editText1);
        emailText = (EditText) findViewById(R.id.editText2);
        phoneText = (EditText) findViewById(R.id.editText3);

        String name = nameText.getText().toString();
        String email = emailText.getText().toString();
        String phone = phoneText.getText().toString();

        try{    //데이터베이스는 예외가 발생할 수 있기 때문에 try catch 이용
            database = openOrCreateDatabase("mydb", MODE_PRIVATE, null);
            sql = "insert into mytable1 values ('" + name + "', '" + email + "', '" + phone + "');";
            database.execSQL(sql);

            output.append(" insert Ok" + "\n");
        }catch(Exception e){
            output.setText("삽입 에러 발생" + e);
            System.out.println("db error!" + e);
        }
    }

    public void back(View v){
        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
        finish();
    }
}


SQLiteDatabase에서 openOrCreateDatabase 메소드를 이용하여 데이터베이스를 먼저 생성합니다. (디비명은 "mydb"입니다.)


이후 String sql에 테이블 생성을 위해서 create문을 작성합니다. (if not exists는 이미 테이블이 생성된 경우는 재생성하지 않는 명령입니다.)


execSQL(sql) 메소드를 통해서 작성한 sql문을 실행합니다.


*** 주의하실 점은 데이터베이스 생성중 에러가 발생할 수 있으니 꼭 try{}catch(){}를 반드시 수행해야 합니다.



** activity_insert.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_insert"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
android:onClick="back"
android:clickable="true"
tools:context="com.example.dmbtv.databasehomework.insertActivity">

<Button
android:text="데이터베이스및 테이블생성"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:onClick="createDB"
android:id="@+id/button1" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="이름"/>

<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText1" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="이메일"/>

<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText2" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="전화번호"/>

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editText3" />

<Button
android:text="데이터삽입"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:onClick="insertDB"
android:id="@+id/button2" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="결과"
android:id="@+id/textView1" />
</LinearLayout>

*** 실행결과 ****


반응형