안녕하세요. 더운데 고생 많으십니다.
다름이아니라 음성인식 기반 영한사전을 만들고있는데요
메뉴 기능중에, '단어검색' , '최근검색' , '단어장' 이런식으로 되어있고, 단어검색에서 검색한 단어는 저절로 최근단어에 저장되게 하려고
SharedPreference 썼는데 이건 하나밖에 안되더군요.. 그래서 하는수없이 데이터베이스를 사용하려고 했는데요
질문의 요지는, Create문으로 테이블 생성했고, Insert문으로 데이터 저장도 잘 됩니다. 검색버튼 클릭함과 동시에 DB에 저장이 되는건
확인을 했는데요. 문제는 Select문인데요.. '최근검색' 메뉴는 리스트뷰로 되어있고, 검색버튼을 누를때마다 차곡차곡 쌓이게 되는건데
제가 모르는게 많아서 그렇겠지만.. 아무리 찾아봐도 select문은 도저히 몰르겠어요..ㅠㅠ
@Override
public void onCreate(SQLiteDatabase db){
String sql = "CREATE TABLE member"+"(word TEXT);";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
db.execSQL("DROP TABLE IF EXSITS member");
onCreate(db);
} 여기까지는 테이블 생성 잘 되었구요.
public void onClick(View v){
str = edit.getText().toString();
db.execSQL("insert into member values('"+str+"');");
//db.close(); 여기까지도 데이터 들어가는거 직접 눈으로 확인했습니다.
문제는 지금 이부분부터..
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.recent);
DBManager dManager = new DBManager(this, "myMember.db", null, 1);
db = dManager.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM member;", null);
cursor.moveToLast();
int z = cursor.getPosition();
String ss = Integer.toString(z);
String temp_string = cursor.getString(cursor.getColumnIndex(ss));
list = (ListView) findViewById(R.id.recent_list);
word_list = new ArrayList<String>();
word_list.add(temp_string);
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, word_list);
list.setAdapter(adapter);
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
// TODO Auto-generated method stub
Toast.makeText(recent.this, word_list.get(position),
Toast.LENGTH_SHORT).show();
} select문 하려면 커서 사용을 해야하는거 같은데 저건 틀린소스거든요.. 어떤식으로 해야하는지 도와주세요..
//아카이누님 하나만 더 여쭙겠습니다.
Cursor cursor = db.rawQuery("SELECT * FROM member", null);
if(cursor.moveToFirst()){
do{
word = cursor.getString(0);
}while(cursor.moveToNext());
}
list = (ListView) findViewById(R.id.recent_list);
word_list = new ArrayList<String>();
word_list.add(word);
이렇게하니깐 단어가 들어오긴하는데 밑으로 쭉쭉 연결이안되고 Preference처럼 하나만 되는데요..
이부분은 어떻게해야하나요? 리스트로 쌓이게 하려면요ㅠ
word부분이 ;;;; String 아닌가요?;;;
word_list 부분이 사용될 리스트구조라면
list = (ListView) findViewById(R.id.recent_list);
word_list = new ArrayList<String>();
Cursor cursor = db.rawQuery("SELECT * FROM member", null);
if(cursor.moveToFirst()){
do{
word_list.add(cursor.getString(0));
}while(cursor.moveToNext());
}
그리고 SELECT * FROM member 이부분 raw부분이 먼지를 정확히 해주셔야 됩니다.
컬럼명이 먼지를 써주셔야 갖고 오고 싶은 걸 갖고올수잇으실거에요
아.. 아카이누님 정말감사합니다. 진짜 이걸 해결하려고 별짓다하면서 시간을 퍼부었는데ㅠㅠ..
진짜감사합니다!! 덕분에 많이 배워갑니다. 더 열심히할게요! 더운데 건강하세요




커서 사용의 단순한 예
Cursor c = db.rawQuery("SELECT * FROM member;", null);
if(c.movetofirst())
{
do{
갖고 오고싶은 부분을 찾아서 가져오는부분
}while(c.movetonext());
}
커서를 마지막으로 보내시는 이유가 있으신지요?;;
"select id,pw from member" 이면
String _ID = c.getString(0);
String _PW = c.getString(1);
이런식으로 가져오시면 됩니당.
아 ;; 그리고
Cursor c = db.rawQuery("SELECT * FROM member;", null); << 이부분
원래 DB 쿼리문에 ; << 세미콜론이 들어가지만
커서문으로 사용하실때는 ; << 제외시키고
Cursor c = db.rawQuery("SELECT * FROM member", null); 이렇게 사용하세요