마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

sql로 앱 재실행 시 텍스트 뷰의 내용이 남게하는 기능 질문합니다

0 추천
@ DBAdapter 부분의 일부 코드

 

// create
    public boolean insertInfo(String subject_time, String subject_list, String amount, String color) {
        ContentValues cv = new ContentValues();
        cv.put(SUBJECT_TIME, subject_time);
        cv.put(SUBJECT_LIST, subject_list);
        cv.put(AMOUNT, amount);
        cv.put(COLOR, color);
        return db.insert(TABLE_NAME, null, cv) != -1;
    }

    // read
    public ArrayList<Info> getAllInfo() {
        ArrayList<Info> info = new ArrayList<Info>();
        Cursor c = db.query(TABLE_NAME, new String[] {ID, SUBJECT_TIME, SUBJECT_LIST, AMOUNT, COLOR}, null, null, null, null, ID + " DESC");

        if (c.moveToFirst()) {
            final int indexId = c.getColumnIndex(ID);
            final int indexSubject_time = c.getColumnIndex(SUBJECT_TIME);
            final int indexSubject_list = c.getColumnIndex(SUBJECT_LIST);
            final int indexAmount = c.getColumnIndex(AMOUNT);
            final int indexColor = c.getColumnIndex(COLOR);

            do {
                int id = c.getInt(indexId);
                String subject_time = c.getString(indexSubject_time);
                String subject_list = c.getString(indexSubject_list);
                String amount = c.getString(indexAmount);
                String color = c.getString(indexColor);
                info.add(new Info(id, subject_time, subject_list, amount, color));
            } while (c.moveToNext());
        }
        c.close();

        return info;
    }

    // update
    public boolean updateInfo(String subject_time, String subject_list, String amount, String color) {
        ContentValues cv = new ContentValues();
        cv.put(SUBJECT_TIME, i.getSubject_time());
        cv.put(SUBJECT_LIST, i.getSubject_list());
        cv.put(AMOUNT, i.getAmount());
        cv.put(COLOR, i.getColor());
        String[] params = new String[] { Integer.toString(i.getId()) };
        int result = db.update(TABLE_NAME, cv, ID + "=?", params);
        return result > 0;
    }

 

@내용 작성에 db가 구현된 부분

 

day2_3.setOnClickListener(new View.OnClickListener(){
   public void onClick(View v){
    
    day2_3.setBackgroundColor(Color.RED);//텍스트 뷰 배경 색깔 빨간색으로 변경        
    dialogView=(View)View.inflate(MainActivity.this, R.layout.day_subject, null);
    dlgEdtSubject=(EditText)dialogView.findViewById(R.id.dlgEdt1); //editText를 나타낸다 
    dlgEdtSubject.setText(day2_3.getText().toString()); //day2_3이란 텍스트 뷰에 글자를 출력한다
    AlertDialog.Builder dlg=new AlertDialog.Builder(MainActivity.this);
    dlg.setTitle("내용 작성"); //다이얼로그의 제목
    dlg.setIcon(R.drawable.ic_launcher); //다이얼로그 옆의 안드로보이 이미지
    dlg.setView(dialogView); //다이얼로그를 띄운다
    
    dlg.setPositiveButton("확인",
        new DialogInterface.OnClickListener(){
       public void onClick(DialogInterface dialog,int which){
                
        mDb.insertInfo(dlgEdtSubject.getText().toString(), dlgEdtSubject.getText().toString(),
          dlgEdtSubject.getText().toString(), dlgEdtSubject.getText().toString());
        
        mDb.updateInfo(dlgEdtSubject.getText().toString(), dlgEdtSubject.getText().toString(),
          dlgEdtSubject.getText().toString(), dlgEdtSubject.getText().toString());
        
        day2_3.setText(dlgEdtSubject.getText().toString()); //day2_3이란 텍스트 뷰에 글자를 출력한다

insert  즉 내용을 처음 삽입한 후에 앱 재실행 시 텍스트 뷰의 내용이 남게하는 기능은 도움을 받아서 구현했습니다

 

하지만 최초에 수학이라고 저장한 뒤 이것을 과학이라고 update(수정)해도 앱 재실행 시 수학이 뜨게 되더군요

 

그래서 update 부분도 구현을 하고자 하는데 코드를 어떻게 고쳐야 할 지 몰라 일부 코드 올립니다

 

----

p.s 그리고 제가 코드 관련 질문을 올릴 때 어떻게 해야 내용을 잘 전달할 수 있는지에 대해서도 조언부탁드립니다 아직 잘 몰라서 긴 코드를 쭉 올리는 편인데 어떻게 해야 할까요

익명사용자 님이 2014년 4월 15일 질문

1개의 답변

+1 추천
음... update 구문을 실행할 때 where 절 뒤에 ?가 있지요.

그 값이 최종적으로 SQL 문이 실행될 때 update 되어야 하는 ID를 가르키나요?

SQL문을 데이터베이스에 쓰기전에 출력하도록 해보시면 다른 문제에서도 많은 도움이 될꺼 같습니다.
인연 (31,880 포인트) 님이 2014년 4월 15일 답변
...