DEVELOPMENT
[Android Studio] Chapter 12 연습문제
200%
2021. 7. 7. 20:00
[연습문제]
5
CREATE TABLE prodTable( num INTEGER PRIMARY KEY AUTOINCREMENT, uName CHAR(15), product CHAR(15), count INTEGER );
INSERT INTO prodTable (uName, product, count) VALUES ( 'Pikachu', 'Desktop', 4);
INSERT INTO prodTable (uName, product, count) VALUES ( 'Nunimugi', 'Laptop', 1);
INSERT INTO prodTable (uName, product, count) VALUES ( 'Haemugi', 'Laptop', 2);
INSERT INTO prodTable (uName, product, count) VALUES ('Pichu', 'Desktop', 5);
6
activitiy_main.xml
더보기
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<DatePicker
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/datePicker1"
android:calendarViewShown="false"
android:datePickerMode="spinner"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/edtDiary"
android:background="#00ff00"
android:lines="8"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnWrite"
android:enabled="false"
android:text="BUTTON"/>
</LinearLayout>
MainActivity.java
더보기
package com.cookandroid.a12_6;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import android.Manifest;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.Toast;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.FileNameMap;
import java.text.SimpleDateFormat;
import java.time.Year;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity {
DatePicker dp;
EditText edtDiary;
Button btnWrite;
String fileName;
myDBHelper myHelper;
SQLiteDatabase sqlDB;
public static String datepicked;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle("연습문제 12-6");
dp = (DatePicker) findViewById(R.id.datePicker1);
edtDiary = (EditText) findViewById(R.id.edtDiary);
btnWrite = (Button) findViewById(R.id.btnWrite);
myHelper = new myDBHelper(this);
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, MODE_PRIVATE);
Calendar cal = Calendar.getInstance();
int cYear = cal.get(Calendar.YEAR);
int cMonth = cal.get(Calendar.MONTH);
int cDay = cal.get(Calendar.DAY_OF_MONTH);
datepicked = Integer.toString(cYear) + Integer.toString(cMonth + 1) + Integer.toString(cDay);
// db에서 값 받아오기
sqlDB = myHelper.getReadableDatabase();
Cursor cursor;
cursor = sqlDB.rawQuery("SELECT content FROM myDiary WHERE diaryDate = " + datepicked + ";", null);
if (cursor.getCount() == 0) {
edtDiary.setText("");
edtDiary.setHint("일기 없음");
btnWrite.setText("새로 저장");
} else {
cursor.moveToNext();
edtDiary.setText(cursor.getString(0));
btnWrite.setText("수정하기");
}
cursor.close();
sqlDB.close();
btnWrite.setEnabled(true);
dp.init(cYear, cMonth, cDay, new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
datepicked = Integer.toString(year) + Integer.toString(monthOfYear+1) + Integer.toString(dayOfMonth);
// db에서 값 받아오기
sqlDB = myHelper.getReadableDatabase();
Cursor cursor;
cursor = sqlDB.rawQuery("SELECT content FROM myDiary WHERE diaryDate = '" + datepicked + "';", null);
if (cursor.getCount() == 0) {
edtDiary.setText("");
edtDiary.setHint("일기 없음");
btnWrite.setText("새로 저장");
} else {
cursor.moveToNext();
edtDiary.setText(cursor.getString(0));
btnWrite.setText("수정하기");
}
cursor.close();
sqlDB.close();
btnWrite.setEnabled(true);
}
});
btnWrite.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(btnWrite.getText().equals("수정하기")){
sqlDB = myHelper.getWritableDatabase();
sqlDB.execSQL("UPDATE myDiary SET content = '" + edtDiary.getText().toString() + "' WHERE diaryDate = '" + datepicked + "';");
sqlDB.close();
Toast.makeText(getApplicationContext(), datepicked+" 이 수정됨", Toast.LENGTH_SHORT).show();
}else{
sqlDB = myHelper.getWritableDatabase();
sqlDB.execSQL("INSERT INTO myDiary (diaryDate, content) VALUES ('" + datepicked + "' , '" + edtDiary.getText().toString() + "');");
sqlDB.close();
Toast.makeText(getApplicationContext(), datepicked+" 이 저장됨", Toast.LENGTH_SHORT).show();
btnWrite.setText("수정하기");
}
}
});
}
public class myDBHelper extends SQLiteOpenHelper {
public myDBHelper(Context context){
super(context, "myDB", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE myDiary(diaryDate CHAR(10) PRIMARY KEY, content VARCHAR(500));");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS myDiary");
onCreate(db);
}
}
}