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

계속 no such table이라 나옵니다 sqlite..

0 추천
안드로이드용 이클립스에서 하고 있는데요

 

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

public class MySQLiteOpenHelper extends SQLiteOpenHelper{
public MySQLiteOpenHelper(Context context,String name,CursorFactory factory,int version){
super(context,name,factory,version);
}

@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String sql="create table memolist ("+"_id integer primary key autoincrement,"+" title text, content text,time text)";
db.execSQL(sql);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
String sql="drop table if exists memolist";
db.execSQL(sql);

onCreate(db);
}

}

 

----------------------------------------------------------------------------------

 

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

public class MySQLiteHandler {

MySQLiteOpenHelper helper;
SQLiteDatabase db;
public MySQLiteHandler(Context ctx) {

helper = new MySQLiteOpenHelper(ctx, "memolist.sqlite", null, 1);
}

// 데이터베이스 오픈
public static MySQLiteHandler open(Context ctx) {
return new MySQLiteHandler(ctx);
}

// 데이터베이스 close
public void close() {
helper.close();
}

// 데이터베이스 저장
public void insert(String title, String content, String time) {
db = helper.getWritableDatabase();

ContentValues values = new ContentValues();
values.put("title", title);
values.put("content", content);
values.put("time", time);
db.insert("memolist", null, values);
}

// 데이터베이스 수정
public void update(String newtime, String content, String newtitle) {
db = helper.getWritableDatabase();

ContentValues values = new ContentValues();
values.put("time", newtime);
values.put("title", newtitle);
db.update("memolist", values, "time=?", new String[] { content });
}

// 데이터 삭제
public void delete(String time) {
db = helper.getWritableDatabase();
db.delete("memolist", "time=?", new String[] { time });
}

// 데이터 조회
public Cursor select() {
db = helper.getReadableDatabase();
Cursor c = db.query("memolist", null, null, null, null, null, null);
// while (c.moveToNext()) {
// int _id = c.getInt(c.getColumnIndex("_id"));
// String time = c.getString(c.getColumnIndex("time"));
// String title = c.getString(c.getColumnIndex("title"));
// String content = c.getString(c.getColumnIndex("content"));
// }
return c;

}

}

 

대체 머가 문제인지.. 계속 테이블이 업다고만 나옵니다. 미치겟네요 ㅡㅡ

 

sqlite는 해당 테이블이 없으면 자동생성 해준느걸루 아는데..왜 이런지 모르겟네요

 

좀 도와주세요 돌아버리겟네여
백만스물하나 (120 포인트) 님이 2013년 3월 28일 질문
자동생성안해주는 걸로 아는데요
코드가 들여쓰기가 없고, '자동생성'이라는 단어 때문에 다른분들이 오해하신거 같습니다.
SQLLiteOpenHelper 를 이용해서 자동 생성되어야 하는 상황이 맞습니다. 소스 보시면 알수 있는데, 구체적인 생성 시점은 helper 에서 getReadableDatabase 나 getWritableDatabase 입니다. (플랫폼 소스를 참고하세요.)

helper 의 onCreate쪽에서 브레이크를 걸어보시던지, 에러로그를 보세요.  아마 다른 질문을 열어서 소스와 함께 에러 로그를 올려주시면 더 도움 받을수 있을 겁니다.

일단 코드 올리는 방법을 찾아서 올려주시면 더 괜찮은 답변 받으실수 있을겁니다.

2개의 답변

0 추천
자동생성을 해주든 안해주든, 안만들어지면 만드시면 되지 않나요.
appa (3,380 포인트) 님이 2013년 3월 29일 답변
–1 추천
sqlite같은경우 자동생성 안해주고 어떤거든 데이터베이스가  생성안해줍니다... 당연히요;

 

테이블이 없다고 나오면 만드시면 됩니다
수상한i (8,050 포인트) 님이 2013년 3월 28일 답변
...