숫자로 입력하면 넣은대로 뜨는데 원하던데로 문자를 입력하면 자꾸 no such column 에러가 뜹니다.
========== JoinActivity.java 파일 ===========
try {
// DB객체 생성(DB가 존재하지 않으면 생성함)
dbmgr = new DBManager (this);
SQLiteDatabase sdb;
// DB연결
sdb = dbmgr.getWritableDatabase();
// members 테이블에 추출정보 추가
sdb.execSQL("insert into members values(" + 999 + "," + "2" +"," + "3" + "," + "456" + ");"); //<== 요기에 숫자가 아니고 문자를 넣고자합니다
// sdb.execSQL(str_name +"," + str_sex + "," + str_sms + "," + str_interest);
// DB닫음
dbmgr.close();
} catch (SQLiteException e) {
// 예외처리 (생략)
}
========== QueryActivity.java 파일 ==========
try {
DBManager dbmgr = new DBManager(this);
//DB연결
SQLiteDatabase sdb = dbmgr.getReadableDatabase();
//SQL문 실행 결과를 Cursor 객체로 받음
Cursor cursor = sdb.rawQuery("select name, sex, sms, interest from members", null);
//cursor 객체로 할당된 members 테이블 데이터를 한 행씩 이동하면서 출력함
while (cursor.moveToNext()) {
//행의 첫번째 열(0), ...., 네 변째 열(3)을 각각 추출함
String name = cursor.getString(0);
String sex = cursor.getString(1);
String sms = cursor.getString(2);
String interest = cursor.getString(3);
//TextView로 데이터를 추가하면서 출력함
tv_list.append((String)name + "\n");
tv_list.append((String)sex + "\n");
tv_list.append((String)sms + "\n");
tv_list.append((String)interest + "\n");
i++;
}
// Cursor 객체닫음
cursor.close();
// dbmgr 객체닫음
dbmgr.close();
} catch (SQLiteException e) {
// DB접속 또는 조회시 에러 발생할때
tv_list.append("DB 에러입니다");
}
========== DBManager.java 파일 =============
package com.andro.dbproj;
import android.content.Context;
import android.database.sqlite.*;
public class DBManager extends SQLiteOpenHelper {
public DBManager (Context context) {
super(context, "myDB", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table members (name text, sex text, sms text, interest text);");
}
@Override
public void onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion){
}
}
숫자를 넣으면 괜찮은데 (따옴표 유무 상관없이) str_name 요런거 넣어서 문자넣으면
아래와같이 오류메세지가 뜹니다.
02-21 14:01:26.692: I/Database(477): sqlite returned: error code = 1, msg = no such column: aaa
02-21 14:01:26.692: E/Database(477): Failure 1 (no such column: aaa) on 0x59d568 when preparing 'insert into members values(aaa,2,3,456);'.
조언 부탁드립니다 ㅠ.ㅜ
name text, sex text, sms text, interest text
컬럼형이 text 로 선언되어 있으니 문자형을 넣을 때는
insert into members values('aaa','2','3','456'); 이렇게 하셔야죠
문자형을 DB에 넣고자 할때는 작은따옴표로 구분해줘야 합니다.