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

SQLite 사용하는 방법 질문입니다.

0 추천

 

 

 

책에있는 예제를 그대로 따라하고 있습니다.

참고중인 책은 스텝 바이스텝 안드로이드 앱 개발 책이고 sQlite 활용부분보고 있습니다.

DBManger파일을 만들었구요



import android.content.Context;
import android.database.sqlite.*;

public class DBManager extends SQLiteOpenHelper{
	
	public DBManager(Context context){
		super(context, "myDB", null, 1);
		System.out.println("디비생성초기화");
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
		System.out.println("디비만듬??");
		db.execSQL("create table my(_id integer PRIMARY KEY autoincrement,name text,season text,height text,weight text);");
		
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
		
	}

	
}

 

 

 

 

저장된 데이터를 가져오는 부분입니다.

TextView tv_list=(TextView)findViewById(R.id.list);
		int i=0;
		
		try{
			DBManager dbmgr = new DBManager(this);
			SQLiteDatabase sdb = dbmgr.getReadableDatabase();
			Cursor cursor = sdb.rawQuery("select name,season,height,weight from my", null);
			System.out.println("쿼리"+sdb.rawQuery("select name,season,height,weight from my", null));
			while(cursor.moveToNext()){
				
				String name = cursor.getString(0);
				String season = cursor.getString(1);
				String height = cursor.getString(2);
				String weight = cursor.getString(3);
				
				tv_list.append(name+"\n");
				tv_list.append(season+"\n");
				tv_list.append(height+"\n");
				tv_list.append(weight+"\n");
				
				i++;
				
			}
			cursor.close();
			dbmgr.close();
		}catch(SQLiteException e){
			tv_list.append("DB 에러입니다.");
		}
		
		if(i == 0)
			tv_list.append("저장된 정보가 없습니다.\n");
		save = (Button)findViewById(R.id.save);
		save.setOnClickListener(this);

 

 

 

 

 

저장버튼을 누를때 동작입니다.

에디트텍스트에 입력된걸 받아와 저장합니다.

else if(v == save){				
				try{

					dbmgr = new DBManager(this);
					SQLiteDatabase sdb;
					
					sdb=dbmgr.getWritableDatabase();
					
					sdb.execSQL("insert into my values("
					+et_name.getText().toString()+","
					+et_height.getText().toString()+","
					+str_season+","
					+et_weight.getText().toString()+");");
					
					dbmgr.close();
				}catch(SQLiteException e){
					
				}
			}

 

 

그런데 막상 해보면

로그캣에

08-18 00:19:21.397: E/SQLiteLog(9401): (1) no such column: 대한민국
 
 
이렇게 뜹니다.
 
칼럼이 없다는데 그럼 디비가 안 만들어진거 같지는 않고 쿼리가 이상한건가 해서 쿼리 찍어보려는데 쿼리는 어떻게 찍어볼 수 있나요?
 
이 문제는 디비가 안 만들어진건가요?
 
디비 처음해보는데 어렵네요..ㅠㅠ

 

 

브루스웨인 (8,580 포인트) 님이 2014년 8월 18일 질문

2개의 답변

0 추천
 
채택된 답변

 

아래처럼 수정해서 로그 찍어 보시고...

insert 구문 필드명 생략되었습니다....문자열은 ' 로 둘러싸야 하는데 싸여있지도 않고..

 
String strSql = "insert into my(필드명1, 필드명2, 필드명3, 필드명4) values(" + et ......  ;
 
Log.i("태그명", strSql);
 
sdb.execSQL(strSql);
바램 (19,650 포인트) 님이 2014년 8월 18일 답변
브루스웨인님이 2014년 9월 5일 채택됨
0 추천
select문으로 해당 디비 테이블의 있는 모든 데이터를 조회해보세요.

db자체가 만들어진건데, 검색을 못한건지 [위의 대한민국] , 아님 db를 만들지 않아서 검색을 못한건지 ..
anci (19,950 포인트) 님이 2014년 8월 18일 답변
...