안드로이드 Database Insert
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>
*** 실행결과 ****
'Android' 카테고리의 다른 글
안드로이드 sqlite - SQLiteOpenHelper클래스 (0) | 2017.06.15 |
---|---|
android - Execution failed for task ':app:buildNative' 에러 (0) | 2017.06.02 |
안드로이드 - intent 활용(명시적 인텐트) (0) | 2017.04.28 |
안드로이드 - 버튼 누르는 동안 동작 (0) | 2017.04.27 |
HttpURLConnection.HTTP_OK, 302 주의점 (0) | 2017.03.02 |