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

Android SQlite 테이블이 안 만들어집니다 ...ㅠ

0 추천
no such table: aim_save_tbl (code 1)

라는 오류가 뜨는데.. 테이블이 안 만들어진거 같아요.. FOREING KEY를 처음 써보는데.. 테이블 만들 때

오타가 있는건지.. 제 눈에는 안 보이네요. 도와주세요 ㅠㅠ

 

 

public class SQLiteOpenHelperAimCheck extends SQLiteOpenHelper {
    private static String DB_NAME = "voySchema.db";
    private static int DB_VERSION = 1;
    private static SQLiteOpenHelperAimCheck openHelper;

    private SQLiteOpenHelperAimCheck() {
        super(VOYApplication.getContext(), DB_NAME, null, DB_VERSION);
    }

    // 생성자 - 현재 객체 생성
    public static SQLiteOpenHelperAimCheck openAimCheckSQLiteDatabase() {
        if (openHelper == null) {
            openHelper = new SQLiteOpenHelperAimCheck();
        }
        return openHelper;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        StringBuilder aimCheckBuf = new StringBuilder();
        aimCheckBuf.append(" CREATE TABLE ")
                .append(SchemaAimCheck.TABLE_NAME)
                .append(" ( ")
                .append(SchemaAimCheck._ID)
                .append(" INTEGER PRIMARY KEY AUTOINCREMENT, ")
                .append(SchemaAimCheck.AIMID_COL)
                .append(" INTEGER, ")
                .append(SchemaAimCheck.AIMTAG_COL)
                .append(" TEXT, ")
                .append(SchemaAimCheck.AIMCONTENT_COL)
                .append(" TEXT, ")
                .append(SchemaAimCheck.DATE_CHECK_COL)
                .append(" TEXT, ")
                .append(SchemaAimCheck.SAVE_CHECK_COL)
                .append(" TEXT, ")
                .append(" FOREIGN KEY(" + SchemaAimCheck.AIMID_COL + ") REFERENCES " + SchemaAim.TABLE_NAME + "(" + SchemaAim._ID + "); ");
        db.execSQL(aimCheckBuf.toString());
    }
no such table 님이 2015년 12월 17일 질문
2015년 12월 17일 태그 변경

1개의 답변

0 추천

해결했습니다.. 제가 SQLiteOpenHelper 클래스를 두개 만들었더군요.. 클래스 한 군데다 만드니까 해결됐습니다. (알려준 옆 동료에게 감사)

저 같은 문제 겪으시는 분 계실가봐 해결한 코드 올려봅니다.

 

    @Override
    public void onCreate(SQLiteDatabase db) {
        StringBuilder aimListBuf = new StringBuilder();
        aimListBuf.append(" CREATE TABLE ")
                .append(SchemaAim.TABLE_NAME)
                .append(" ( ")
                .append(SchemaAim._ID)
                .append(" INTEGER PRIMARY KEY AUTOINCREMENT, ")
                .append(SchemaAim.TAG_COL)
                .append(" TEXT, ")
                .append(SchemaAim.CONTENT_COL)
                .append(" TEXT, ")
                .append(SchemaAim.AlAM_COL)
                .append(" TEXT, ")
                .append(SchemaAim.PERIOD_COL)
                .append(" TEXT, ")
                .append(SchemaAim.WEEK_COL)
                .append(" TEXT, ")
                .append(SchemaAim.STARTTIME_COL)
                .append(" TEXT, ")
                .append(SchemaAim.COMPLETE_COL)
                .append(" TEXT DEFAULT 'N'); ");

        StringBuilder aimSaveCheckBuf = new StringBuilder();
        aimSaveCheckBuf.append(" CREATE TABLE ")
                .append(SchemaAimCheck.TABLE_NAME)
                .append(" ( ")
                .append(SchemaAimCheck._ID)
                .append(" INTEGER PRIMARY KEY AUTOINCREMENT, ")
                .append(SchemaAimCheck.AIMID_COL)
                .append(" INTEGER, ")
                .append(SchemaAimCheck.AIMTAG_COL)
                .append(" TEXT, ")
                .append(SchemaAimCheck.AIMCONTENT_COL)
                .append(" TEXT, ")
                .append(SchemaAimCheck.DATE_CHECK_COL)
                .append(" TEXT, ")
                .append(SchemaAimCheck.SAVE_CHECK_COL)
                .append(" TEXT, ")
                .append(" FOREIGN KEY(" + SchemaAimCheck.AIMID_COL + ") REFERENCES " + SchemaAim.TABLE_NAME + "(" + SchemaAim._ID + ")); "); // 끝에 ) 하나를 빼먹었더군요. :D
              
        db.execSQL(aimListBuf.toString());
        db.execSQL(aimSaveCheckBuf.toString());
    }

익명사용자 님이 2015년 12월 17일 답변
...