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

안녕하세요 DB관련 간단한 초보적인 질문입니다.

0 추천

 

보시다시피 button1 을 클릭하게되면 

member 테이블에 editname(문자), editTime(숫자), editKcal(숫자) 이렇게 3가지 정보가 들어가게 하였습니다

그런데 실행을 시키면 '응답할수 없습니다' 하고 꺼져 버립니다.

혹시나 다른부분에 문제가 있을까해서 (1) 번 부분을 지운후 (2)번부분만 넣고 실행하면

토스트가 실행이 되는데 (1)번을 넣게되면 오류가 발생합니다

제가 뭘 잘못 쓰고 있는지 궁금합니다. 

DB를 검색하는 부분이나 초기화 시키는 부분은 잘되는데 입력하는것만 안됩니다.. 

 

(혹시 다른부분을 위해 전문을 올리겠습니다 )

 

public class FourActivity extends Activity implements OnClickListener {

    myDB my;
    EditText editName, editTime, editKcal;
    SQLiteDatabase sqlDB2;
    ImageView imgView;
    SQLiteDatabase sql;

    int data[] = new int[6];

    int cnt = 0;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_4th);
        setTitle("소모 칼로리");

        data[0] = R.drawable.c0;
        data[1] = R.drawable.c1;
        data[2] = R.drawable.c2;
        data[3] = R.drawable.c3;
        data[4] = R.drawable.c4;
        data[5] = R.drawable.c5;

        setContentView(R.layout.activity_4th);

        imgView = (ImageView) findViewById(R.id.imgView);
        Button backButton = (Button) findViewById(R.id.backButton);
        Button forwardButton = (Button) findViewById(R.id.forwardButton);
        editName = (EditText) findViewById(R.id.editName);
        editTime = (EditText) findViewById(R.id.editTime);
        editKcal = (EditText) findViewById(R.id.editKcal);
        Button button1 = (Button) findViewById(R.id.button1);

        my = new myDB(this);
        button1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                sql = my.getWritableDatabase();
                sql.execSQL("INSERT INTO member VALUES ( '"
                        + editName.getText().toString() + "' , "

                        + editTime.getText().toString() + " , "

                        + editKcal.getText().toString() + ");");
                sql.close();
                Toast.makeText(getApplicationContext(), "기록됨", 0).show();
            }
        });

        backButton.setOnClickListener(this);
        forwardButton.setOnClickListener(this);

    }

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

        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL("CREATE TABLE member ( gName1 CHAR(20) PRIMARY KEY, gNumber1 INTEGER, gNumber2 INTEGER);");
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("DROP TABLE IF EXISTS member");
            onCreate(db);
        }
    }
    
    
    public void forward() {
        if (cnt == data.length - 1) {
            Toast.makeText(this, "마지막 사진입니다.", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, "다음사진", Toast.LENGTH_SHORT).show();
            cnt++;
            imgView.setImageResource(data[cnt]);
        }
    }

    public void back() {
        if (cnt == 0) {
            Toast.makeText(this, "첫 사진입니다.", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(this, "이전사진", Toast.LENGTH_SHORT).show();
            cnt--;
            imgView.setImageResource(data[cnt]);
        }
    }

    @Override
    public void onClick(View v) {
        Log.i("my info", "v의 값" + v);

        int id = v.getId();

        if (id == R.id.backButton) {
            back();
        }
        if (id == R.id.forwardButton) {
            forward();
        }

    }

 

}

익명사용자 님이 2015년 12월 2일 질문

1개의 답변

0 추천
1부분에 보면 values안에 보면 첫번째 파라미터만 호따옴표(')를 적어놓고,

두번째, 세번째 eidttext의 내용에는 호따옴표를 생략하신것 같네요..
캬옹이 (37,920 포인트) 님이 2015년 12월 2일 답변
답변 감사합니다
그런데 ' 붙혀도 안붙혀도 되지가않습니다...

sql.execSQL("INSERT INTO member VALUES ( '"
                        + editName.getText().toString() + "' , '"

                        + editTime.getText().toString() + "' , '"

                        + editKcal.getText().toString() + "');");
                sql.close();
해결됬습니다 감사합니다!!
...