2016-12-13 7 views
0

私がそのことについていくつかのトピックとなって、私はそれが私の状況で助けにはならなかったしかしそこに与えられたすべての答えを、次の試してみました知っています。エラー挿入SecondPhone =電話= PhotoUri = android.resource://(1)テーブルの連絡先は、E/SQLiteDatabase SecondPhone という名前の列を持っていない:私は、列SecondPhoneがテーブル[...]という名前の列がありません[...]をSQLiteのジャワ

E/SQLiteLog存在しないというエラーを取得しておきます(入力番号 ) android.database.sqlite.SQLiteException:テーブル連絡先(SecondPhone、電話、PhotoUri、電子メール、住所、氏名) (?、?、?、?、?、?)

012をVALUES

これは私が受け取っているエラーメッセージの一部です

これは私のコードの一部です。私はこの問題はここにいる期待するが、それは別の場所

public class DatabaseSQL extends SQLiteOpenHelper { 

private static final int DATABASE_VERSION = 2; 
    //setting variables for future database columns 
private static final String DATABASE_NAME = "ContactManagerLite", 
     TABLE_CONTACTS = "Contacts", 
     KEY_NAME = "Name", 
     KEY_PHONE = "Phone", 
     KEY_SECONDPHONE = "SecondPhone", 
     KEY_EMAIL = "Email", 
     KEY_ADDRESS = "Address", 
     KEY_PHOTOURI = "PhotoUri", 
     KEY_ID = "ID"; 

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

@Override 
public void onCreate(SQLiteDatabase db){      //creates a table upon starting the application 
    db.execSQL("CREATE TABLE " + TABLE_CONTACTS + "(" + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_NAME + " TEXT" + KEY_PHONE + " TEXT" + KEY_SECONDPHONE + " TEXT" + KEY_EMAIL + " TEXT" + KEY_ADDRESS + " TEXT" + KEY_PHOTOURI + " TEXT)"); 

} 
@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){      //if something changes the old table is being deleted and new one is being created with new data 
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS); 
    onCreate(db); 
} 
public void createContact(contactList contact){  //variables from getters in contactList are being set as values for database 
    SQLiteDatabase db= getWritableDatabase(); 
    ContentValues values = new ContentValues(); 
    values.put(KEY_NAME, contact.getListName()); 
    values.put(KEY_PHONE, contact.getListPhone()); 
    values.put(KEY_SECONDPHONE, contact.getSecondPhone()); 
    values.put(KEY_EMAIL, contact.getEmail()); 
    values.put(KEY_ADDRESS, contact.getAddress()); 
    values.put(KEY_PHOTOURI, contact.getProfilePhotoUri().toString()); 

    db.insert(TABLE_CONTACTS, null, values); 
    db.close(); 
} 

私はAndroidStudio

答えて

1

にそのタイプミスを働いているかもしれない、あなたは、列名のいずれかを区切っていません。それが行われた後、各列

KEY_NAME + " TEXT," + KEY_PHONE + " TEXT," + KEY_SECONDPHONE + " TEXT," + 
KEY_EMAIL + " TEXT," + KEY_ADDRESS + " TEXT," + KEY_PHOTOURI + " TEXT)" 

のデータ型の後に(,)を入れて、あなたのアプリケーション

0

を再インストールします。このcreate table query

db.execSQL("CREATE TABLE " + TABLE_CONTACTS + "(" + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_NAME + " TEXT" + KEY_PHONE + " TEXT" + KEY_SECONDPHONE + " TEXT" + KEY_EMAIL + " TEXT" + KEY_ADDRESS + " TEXT" + KEY_PHOTOURI + " TEXT)"); 

commasが欠落しているこれがあるべき

db.execSQL("CREATE TABLE " + TABLE_CONTACTS + "(" + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_NAME + " TEXT," + KEY_PHONE + " TEXT," + KEY_SECONDPHONE + " TEXT," + KEY_EMAIL + " TEXT," + KEY_ADDRESS + " TEXT," + KEY_PHOTOURI + " TEXT)"); 

(あなたはmakにクエリを再実行する必要がありますそれが更新されるので、実行前にアプリのデータを削除してください) これは役に立ちます。

+0

私は何時間もソリューションを探していますが、私はコンマがあると確信していました! XDどうもありがとう – wierzejs

+0

@wierzejsそれは常にこのようだahahah、我々はプログラムを作る上より少し見えないエラーに多くの時間を無駄には:) –

+1

@wierzejsはそう同様の問題を有する他の皆さんが自分を解決することができます正しいと答えの一つを受け入れることを覚えています問題 –

0

すべての列の後にコンマを入れていませんでした。試してみてくださいこの

db.execSQL("CREATE TABLE " + TABLE_CONTACTS + "(" + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_NAME + " TEXT," + KEY_PHONE + " TEXT," + KEY_SECONDPHONE + " TEXT," + KEY_EMAIL + " TEXT," + KEY_ADDRESS + " TEXT," + KEY_PHOTOURI + " TEXT)"); 

は、データを消去したり、アプリ

希望、これはあなたを助けを再インストールした後、プロジェクトを実行します。

関連する問題