2016-11-25 3 views
0

좋아요. 그래서 추가 테이블을 만들 때 처음에는 연락처라는 테이블을 만들었습니다.테이블이 생성되지 않았습니다. SQLite

그런 다음 생성 할 DBHandler 내 onCreate 메소드에 추가 테이블 메시지를 통합했습니다. 이것이 문제가 발생하기 시작한 시점입니다.

우선 logcat은 왜 그것이 작동하지 않는지에 대한 오류를주지 않기를 원할 것입니다. 그런 다음 문제가 발생했을 때를 대비하여 새 데이터베이스 폴더로 시작하는 프로그램을 내 avd에서 제거했습니다. 그것은 내 테이블 메시지 근처에서 구문 오류를 발행, 나는 또한 내 DBVersion 번호를 변경했습니다.

여기 내 DBHandler입니다, 문제는 onCreate 메서드 내에서 메시지 생성 테이블과 함께 발생합니다 믿습니다. @Rotwang

String CREATE_MESSAGES_TABLE = "CREATE TABLE" + TABLE_MESSAGES + "(" + COLUMN_ID + " INTEGER PIMRARY KEY," + MESSAGES_COLUMN_PERSON + " TEXT," + MESSAGES_COLUMN_BODY + " TEXT," + MESSAGES_COLUMN_ADDRESS + " TEXT," + MESSAGES_COLUMN_TYPE + " TEXT" + ")";

에서

private static final int DATABASE_VERSION = 2; 
private static final String COLUMN_ID = "id"; 
private static final String DATABASE_NAME = "forensicsproject"; 
//==================================================== 
private static final String TABLE_CONTACTS = "contacts"; 
private static final String CONTACTS_COLUMN_NAME = "name"; 
private static final String CONTACTS_COLUMN_PHONENUMBER = "phone_number"; 
//==================================================== 
private static final String TABLE_MESSAGES = "messages"; 
private static final String MESSAGES_COLUMN_PERSON = "person"; 
private static final String MESSAGES_COLUMN_BODY = "body"; 
private static final String MESSAGES_COLUMN_ADDRESS = "address"; 
private static final String MESSAGES_COLUMN_TYPE = "type"; 
//private static final MESSAGES_COLUMN_DATE = "date";  //TODO    


public DBHandler(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 

    String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "(" 
      + COLUMN_ID + " INTEGER PRIMARY KEY," + CONTACTS_COLUMN_NAME + " TEXT," 
      + CONTACTS_COLUMN_PHONENUMBER + " TEXT" + ")"; 
    db.execSQL(CREATE_CONTACTS_TABLE); 
      Log.e("CONTACT", "CREATED"); 

    String CREATE_MESSAGES_TABLE = "CREATE TABLE" + TABLE_MESSAGES + "(" 
      + COLUMN_ID + " INTEGER PIMRARY KEY," + MESSAGES_COLUMN_PERSON + " TEXT," 
      + MESSAGES_COLUMN_BODY + " TEXT," + MESSAGES_COLUMN_ADDRESS + " TEXT," 
      + MESSAGES_COLUMN_TYPE + " TEXT" + ")"; 
    db.execSQL(CREATE_MESSAGES_TABLE); 
      Log.e("MESSAGES", "CREATED"); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

    db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS + TABLE_MESSAGES);  
    onCreate(db); 
} 

public void addContact(Contact contact) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues values = new ContentValues(); 
    values.put(CONTACTS_COLUMN_NAME, contact.getName()); 
    values.put(CONTACTS_COLUMN_PHONENUMBER, contact.getPhoneNumber()); 
    db.insert(TABLE_CONTACTS, null, values); 
    Log.e("CONTACTS", "INSERTED"); 
    db.close(); 
} 

public void getMessages(Messages messages) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues values = new ContentValues(); 
    values.put(MESSAGES_COLUMN_PERSON, messages.getPerson()); 
    values.put(MESSAGES_COLUMN_BODY, messages.getBody()); 
    values.put(MESSAGES_COLUMN_ADDRESS, messages.getAddress()); 
    values.put(MESSAGES_COLUMN_TYPE, messages.getType()); 
    db.insert(TABLE_MESSAGES, null, values); 
    Log.e("MESSAGES", "INSERTED"); 
    db.close(); 

    } 

    } 
+1

logcat please – Jordan

+0

안녕하세요 [link] (http://www.androhub.com/android-sqlite-database/)를 확인하십시오. –

+1

'문자열 CREATE_MESSAGES_TABLE = "CREATE TABLE"+ TABLE_MESSAGES + "(" + COLUMN_ID + "INTEGER PIMRARY KEY,"+ MESSAGES_COLUMN_PERSON + "TEXT" + MESSAGES_COLUMN_BODY + "TEXT"+ MESSAGES_COLUMN_ADDRESS + "TEXT" + MESSAGES_COLUMN_TYPE + "TEXT"+ ")"; '나는 당신이 ** PRIMARY **를 의미했다고 생각합니다. –

답변

2

당신은 당신의 코드에 오타가 몇 가지 있습니다 : 이미 사람으로

String CREATE_MESSAGES_TABLE = "CREATE TABLE" + TABLE_MESSAGES + "(" 
      + COLUMN_ID + " INTEGER PIMRARY KEY," + MESSAGES_COLUMN_PERSON + " TEXT," 
      + MESSAGES_COLUMN_BODY + " TEXT," + MESSAGES_COLUMN_ADDRESS + " TEXT," 
      + MESSAGES_COLUMN_TYPE + " TEXT" + ")"; 

을 지적했다. KEY으로 만들지 만 "CREATE TABLE" +에 공백을 추가하여 테이블 이름이 연결되면 해당 SQL 문 "CREATE TABLE " +을 올바르게 작성해야합니다.

0

나는 당신이 의미 추측 PRIMARY

관련 문제