안드로이드 스튜디오 sqlite 연동 질문

안드로이드 스튜디오 sqlite 연동 질문

QA

안드로이드 스튜디오 sqlite 연동 질문

답변 1

본문

안녕하세요 안드로이드 스튜디오로 앱을 개발하고잇는 초보 개발자입니다

 

datepicker 에서 선택한 날짜와 edittext에 작성한 글을 데이터베이스에 저장하는 코드입니다

 

package com.example.dbtest2;

import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.Toast;


public class MainActivity extends AppCompatActivity {

    myDBHelper myHelper;
    DatePicker dp;
    Button bt1;
    SQLiteDatabase sqlDB;
    EditText Et1;

    int cYear ;
    int cMonth ;
    int cDay ;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        dp =(DatePicker) findViewById(R.id.dpker1);
        bt1 = (Button)findViewById(R.id.button1);
        Et1 = (EditText) findViewById(R.id.et1);


        myHelper = new myDBHelper(this);
        

        dp.init(dp.getYear(), dp.getMonth(), dp.getDayOfMonth(), new DatePicker.OnDateChangedListener() {
            @Override
            public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                cYear = year;
                cMonth = monthOfYear+1;
                cDay = dayOfMonth;


            }
        });



        bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                sqlDB = myHelper.getWritableDatabase();
                sqlDB.execSQL("INSERT INTO diaryTBL(dYear,dMonth,dDay,dinfo) VALUES ('" + cYear + "', '" + cMonth + "','" + cDay + "','"+ Et1.getText().toString() +"' );");
                sqlDB.close();
                Toast.makeText(getApplicationContext(), "입력됨",
                        Toast.LENGTH_SHORT).show();
            }
        });
        
    }


    public class myDBHelper extends SQLiteOpenHelper {
        public myDBHelper(Context context) {
            super(context, "diary8DB", null, 1);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL("CREATE TABLE  diaryTBL ( dYear INTEGER PRIMARY KEY,dMonth INTEGER,dDay INTEGER, dinfo CHAR(100));");
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("DROP TABLE IF EXISTS diaryTBL");
            onCreate(db);
        }
    }


}

3076820299_1606844800.4375.png

3076820299_1606844808.8981.png

 

AVD로 앱을 실행하여 날짜선택과 글 입력후 버튼을누르면 데이터베이스가 생성되며 데이터가 저장이 되고있습니다 근데 문제는 처음실행해서 처음 버튼을 클릭했을때 한번만 저장이되고 그 다음부터는 저장이 안됩니다.. 

 

원하는건 버튼을 누를때마다 테이블에 데이터를 저장하는것인데 무엇이 문제인지 모르겠습니다..

 

코드에서 문제가 되는부분이 있다면 알려주세요 ㅜㅜ

 

이 질문에 댓글 쓰기 :

답변 1

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 123,714
© SIRSOFT
현재 페이지 제일 처음으로