자바 sqlite 관해 질문드립니다.

조회수 316회
    myHelper = new myDBHelper(this);
    btnInit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            sqlDB = myHelper.getWritableDatabase();
            myHelper.onUpgrade(sqlDB, 1, 2);
            sqlDB.close();
        }
    });
    btnInsert.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            sqlDB = myHelper.getWritableDatabase();
            sqlDB.execSQL("INSERT INTO groupTBL VALUES('"
                    + edtName.getText().toString() +"', "
                    + edtEmail.getText().toString() +");");
            sqlDB.close();
            Toast.makeText(getApplicationContext(), "입력됨", Toast.LENGTH_SHORT).show();
        }
    });
    btnSelect.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            sqlDB = myHelper.getReadableDatabase();
            Cursor cursor;
            cursor = sqlDB.rawQuery("SELECT * FROM groupTBL;", null);

            String strNames = "이름" + "\r\n" + "--------" + "\r\n";
            String strEmails = "이메일" + "\r\n" + "--------" + "\r\n";
            while (cursor.moveToNext()) {
                strNames += cursor.getString(0) + "\r\n";
                strEmails += cursor.getString(1) + "\r\n";
            }
            edtNameResult.setText(strNames);
            edtEmailResult.setText(strEmails);
            cursor.close();
            sqlDB.close();
        }
    });
}
public class myDBHelper extends SQLiteOpenHelper {
    public myDBHelper(Context context){
        super(context, "groupDB", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE groupTBL (gName CHAR(20) PRIMARY KEY, gNumber INTEGER);");
    }

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

}

안녕하세요 안드로이드 스튜디오 공부중인 학생입니다.

이와같이 간단한 sqlite 예제중 궁금한게 있습니다.

이름과 이메일을 입력받게 만들고 실행을 시켰을때 이름은 문자나, 숫자로 잘작동하지만 이메일부분만 숫자로만 인식되고 다른 글자를 사용하면 앱이 중지됩니다. 숫자만 가능한게아니라 글자를 넣고싶은데 어떻게 수정해야할까요?

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • groupTBL 테이블은 gName이라는 20자 길이 문자와 gNumber라는 숫자밖에 입력을 못 하도록 CREATE되는군요. 그러니 이메일을 입력하지 못하지요. 엽토군 2021.12.2 21:18
  • gNumer INTEGER 부분을 CHAR(30)으로 바꿔봤지만 똑같이 종료되는건 어떤거인지 알수있을까요? 알 수 없는 사용자 2021.12.2 21:58
  • 음... 정말로 테이블이 삭제되고 새로 생성되었나요? 엽토군 2021.12.2 22:00
  • INIT 부분의 버튼을 누르면 삭제는 되는걸로 보입니다. 알 수 없는 사용자 2021.12.2 22:04
  • 아 네 INSERT하는 부분에서 이메일 입력 부분을 작은따옴표 써서 감싸주세요. gName 한것처럼요. (그나저나 이메일 저장하는 필드명이 gNumber라는 부분이 너무 신경 쓰이네요.) 엽토군 2021.12.2 22:06
  • + 'edtEmail.getText().toString()' +");"); 이렇게 감싸면 될까요?? 알 수 없는 사용자 2021.12.2 22:08
  • 아닐걸요... toString() + "'); 일 거 같은데요... 잘 보세요... 엽토군 2021.12.2 22:10
  • 작은따옴표로 감쌌지만 똑같이 앱이 종료가 되네요.. ---- 아 제가 덜감쌌었네요!! 감사합니다! 알 수 없는 사용자 2021.12.2 22:22

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)