この例外に関するほとんどの質問を読んでいますが、db.insertがこのエラーをスローする理由を明確に示していません。 DDMSから手動でdbを削除するまで、エラーなしでうまく動作していました。私SQLiteOpenHelperコードを以下に示します。sqliteconstraintexceptionエラー19の制約を与えるdb.insert()が失敗したのはなぜですか?
public class LoginSQLiteOpenHelper extends SQLiteOpenHelper {
public static final String DB_NAME = "logincredentials.sqlite";
public static final int DB_VERSION_NUMBER = 1;
public static final String DB_TABLE_NAME = "credentials";
public static final String USERNAME = "user_name";
public static final String PASSWORD = "password";
private static final String DB_CREATE_SCRIPT = "create table " + DB_TABLE_NAME +
"(_id integer primary key autoincrement," +
USERNAME + " text not null, " +
PASSWORD + " text not null);" ;
public LoginSQLiteOpenHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION_NUMBER);
}
@Override
public void onCreate(SQLiteDatabase aSqliteDB) {
Logger.d("Create", "Creating the database...");
aSqliteDB.execSQL(DB_CREATE_SCRIPT);
}
}
値を挿入するための私のコードは次のとおりです。
ContentValues contentValues = new ContentValues();
contentValues.put(LoginSQLiteOpenHelper.USERNAME, loginId);
contentValues.put(LoginSQLiteOpenHelper.PASSWORD, password);
database.insert(LoginSQLiteOpenHelper.DB_TABLE_NAME, null, contentValues);
スタックトレースを投稿できますか?データベース/テーブルが削除されていますか? –