2016-12-31 6 views
-1

私は最初のアプリケーションを書いていますが、データベースを組み込もうとしています なぜsqlitedatabaseの挿入メソッドは-1を返しますか?私は混乱してい ...なぜsqlitedatabase.insertは-1を返しますか?

private static final int DATABASE_VERSION = 1; 
private static final String DATABASE_NAME = "MyDatabase"; 
private static final String TABLE_CONTACT = "contact"; 
private static final String id_col = "id"; 
private static final String name_col = "name"; 
private static final String ph_num_col = "phone_number"; 

public static final String CREATE__TABLE_contact= 
     "CREATE TABLE " + TABLE_CONTACT + " (" + 
       id_col + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
       name_col + " TEXT, " + 
       ph_num_col + " TEXT" + ")"; 
public SqliteDatabaseHelper(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
} 


@Override 
public void onCreate(SQLiteDatabase sqLiteDatabase) { 
    //sakhte table haye morede niaz.... 
    sqLiteDatabase.execSQL(CREATE__TABLE_contact); 
} 

................................... ...........................

public void addContact(Contact contact){ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues values = new ContentValues(); 
    values.put("name",contact.getName()); 
    values.put("phone_number",contact.getPhone_number()); 

    Long test = db.insert(TABLE_CONTACT, null, values); 
    if(test== -1) { 
     Log.i("insert", ""+test); 
    } 
    db.close(); 

} 
+0

ログトレースを提供できますか? –

+2

-1は、データベースに新しい行を挿入中にエラーが発生したことを意味します。具体的なSQLエラーのような詳細を提供する必要があります。あなたのlogcatを見て – GVillani82

+0

ちょうどidの代わりに_idを列名として使ってみてください。http://stackoverflow.com/questions/3192064/about-id-field-in-android-sqlite – avinesh

答えて

0

AndroidManifest.xmlファイルでコンテンツプロバイダのサブクラスを定義していることを確認してください。次のサンプルコードを見つけてください。 (あなたがあなたのアプリケーションに応じて変更する必要があります。)

<provider 
    android:name="com.example.app.MyDataBase" 
    android:authorities="com.example.app" 
    android:exported="false"> 
</provider> 

Androidデベロッパーページ、linkを参照してください。

関連する問題