2016-11-25 14 views
0

これで追加のテーブルを作成する際に問題が発生しました。最初はContactsというテーブルを作成しました。テーブルが作成されていませんSQLite

私は作成するDBHandler内のonCreateメソッドに追加のテーブルメッセージを統合しました。これは問題が発生し始めたときです。

まず最初にlogcatは、それがなぜ機能していないのかというエラーを出すことを拒否しました。そして、私はこのプログラムを私のavdから削除しました。それは私のテーブルのメッセージの近くに構文エラーを発行する、私も私のDBVersion番号を変更しました。

私のDBHandlerは、問題がonCreateメソッド内でCreate messagesテーブルで発生していると思います。すでに誰かのよう

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" + ")"; 

:私はあなたがPRIMARY

+1

あなたのlogcatを表示してください – Jordan

+0

こんにちは[リンク](http://www.androhub.com/android-sqlite-database/)をご確認ください。 –

+1

'ストリングCREATE_MESSAGES_TABLE = "CREATE TABLE" + TABLE_MESSAGES + "(" + COLUMN_ID + "INTEGER PIMRARYキー、" + MESSAGES_COLUMN_PERSON + "TEXT" + MESSAGES_COLUMN_BODY + "TEXT" + MESSAGES_COLUMN_ADDRESS + "TEXT" + MESSAGES_COLUMN_TYPE + "TEXT" + ")"; 'あなたは** PRIMARY **を意味すると思います。 –

答えて

2

あなたはあなたのコード内の誤字のカップルを持っていることを意味推測@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(); 

    } 

    } 
0

あなたが必要と指摘したKEYにする必要がありますが、テーブル名が連結されると"CREATE TABLE " +という正しいSQL文にするには、"CREATE TABLE" +にもスペースを追加する必要があります。

関連する問題