일단 본 질문 전에
Go_result dManager = new Go_result(this, "Example.db", null, 1);
SQLiteDatabase db = dManager.getWritableDatabase(); 이렇게 해주면요
Go_result 클래스 안에 onCreate 함수 있는곳으로 가서
db.execSQL("CREATE TABLE recent_search"+"(word TEXT, mean TEXT);"); 이거 실행시키지않나요??
근데 왜 이거 한줄을 쓰면 실행이 되는데
저 밑에다가
db.execSQL("INSERT INTO recent_search VALUES('one', '하나');");
db.execSQL("INSERT INTO recent_search VALUES('two', '둘');");
db.execSQL("INSERT INTO recent_search VALUES('three', '셋');");
db.execSQL("INSERT INTO recent_search VALUES('four', '넷');");
db.execSQL("INSERT INTO recent_search VALUES('five', '다섯');"); 이것도 쭉 추가시켜주면 삽입이 안되죠??
정확하게, onCreate 함수가 언제호출되고, create문이랑 insert문은 어디에다가 써줘야하는지 .. 조언좀 부탁드립니다.
그리고, db.execSQL(insert ~ ) 라고 할려고 하는데,
만일 그 칼럼에 이미 데이터가 있다면, 저장하지말고 넘어가라 라는 소스는 어떤식으로 작성해야 하죠??
그리고, 질문한가지만 더할게요 ..
Go_result dManager = new Go_result(this, "Example.db", null, 2);
db = dManager.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM recent_search", null);
startManagingCursor(cursor);
if (cursor.moveToFirst()) {
while (cursor.moveToNext()) {
if (text.equals(cursor.getString(0))) {
result.setText(cursor.getString(1));
} else
result.setText("ERROR");
}
}
버전 바꾸니까 잘 삽입되었습니다. 감사합니다 그런데요 하나 더..
디비에 있는 목록중에서 커서 이동하면서,
제가 EditText창에 입력한 것을 받아와서, 그 String 이랑 DB에 저장되어있는 String이랑 비교 후,맞으면 내용 뿌리는건데
커서이동을 어떻게 해야하나요/ㅠㅠ




onCreate()가 호출되는 시점은
-. DB가 없을 때(보통 맨 처음 실행시)
-. DB의 버전이 변경되었을 때
호출이 되고요 일단 DB가 생성된 이후에는 onCreate()는 호출이 안되고 대신 onUpgrade()가 호출됩니다.
그래서 버전이 현재 1로 되어 있는 것을 다른 값으로 바꾸어서 실행해 보면
db.execSQL(...) 5개가 실행이 될것 같은데요....
일단 DB가 생성된 이후에는 버전이 바뀌기 전에는 onCreate() 안에 insert하는 새로운 코드를 집어 넣어봐도
onCreate()가 호출이 안되니까 DB에 데이타가 입력이 안되지요.