String query = "SELECT * FROM " + CHAT + " WHERE " + CHAT_NAME +" = '" + room_name + "'";
이렇게 하면 저장이 안되서 cursor.moveToFirst에 false 가 되는데
String query = "SELECT * FROM " + CHAT + " '" + room_name + "'"; 이렇게 하면 정상적으로 저장되어 출력이 되거든요??
이유가 무엇일까요?
------------------------------------------------------------------------------------------------------
public DBHandler(Context context, String name, SQLiteDatabase.CursorFactory factory, int version)
{
super(context, DATABASE_NAME, factory, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
String CREATE_CHAT_TABLE =
"CREATE TABLE " +
CHAT + "(" + CHAT_LIST + " INTEGER PRIMARY KEY," +
CHAT_NAME + " TEXT," +
CHAT_TEXT + " TEXT" + ")";
db.execSQL(CREATE_CHAT_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
db.execSQL("DROP TABLE IF EXISTS " + CHAT);
onCreate(db);
}
public ArrayList<String> findProduct(String room_name)
{
Log.i("findProduct", String.valueOf(room_name));
String query = "SELECT * FROM " + CHAT + " WHERE " + CHAT_NAME +" = '" + room_name + "'"; < -- 문제
arrayList = new ArrayList<>();
SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
Cursor cursor = sqLiteDatabase.rawQuery(query, null);
Log.i("Cursor", DatabaseUtils.dumpCursorToString(cursor));
if(cursor.moveToFirst())
{
cursor.moveToFirst();
int count = cursor.getCount();
Log.i("count", String.valueOf(count));
for(int i = 0; i < count; i++)
{
Log.i("cursor", "Start");
String name = cursor.getString(cursor.getColumnIndex("name"));
arrayList.add(name);
cursor.moveToNext();
}
cursor.close();
}
else
{
Log.i("Select", "Error");
}
sqLiteDatabase.close();
return arrayList;
}
public void addProduct(List_Data list_data)
{
ContentValues contentValues = new ContentValues();
contentValues.put(CHAT_NAME, list_data.setRoomName());
Log.i("addProduct", String.valueOf(list_data.setRoomName()));
SQLiteDatabase sqLiteDatabase =this.getWritableDatabase();
sqLiteDatabase.insert(CHAT, null, contentValues);
sqLiteDatabase.close();
}
답변 부탁드립니다!
// DB 생성시 필드 값을 TEXT NOT NULL로 해주니
E/SQLiteLog: (1299) abort at 6 in [INSERT INTO chat(name) VALUES (?)]: NOT NULL constraint failed: chat.text 이런 에러가 발생했습니다. 그럼 그전 까지는 NULL 값이 들어갔다는 것인데 흠;;