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

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

QA

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

본문

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

 

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

답변을 작성하시기 전에 로그인 해주세요.
전체 131
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT