public static final String TAG = DBHelper.class.getSimpleName();
public static final int DATEBASE_VERSION = 1;
public static final String DATEBASE_NAME = "ContactDB";
public static final String TABLE_CONTACT = "Contact";
public static final String KEY_ID = "ID";
public static final String KEY_NAME = "Name";
public static final String KEY_LOGIN = "Login";
public static final String KEY_PASS = "Pass";
public static int countUser = 0;
public DBHelper(Context context) {
super(context, DATEBASE_NAME, null, DATEBASE_VERSION);
}
public static final String CREATE_TABLE_USERS = "CREATE TABLE " + TABLE_CONTACT + " ( "
+ KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ KEY_NAME + " TEXT, "
+ KEY_LOGIN + " TEXT, "
+ KEY_PASS + " TEXT);";
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_USERS);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACT);
onCreate(db);
}
@Override
public void addContact(Contact contact) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues value = new ContentValues();
value.put(KEY_NAME, contact.getName());
value.put(KEY_LOGIN, contact.getLogin());
value.put(KEY_PASS, contact.getPass());
Long id = db.insert(TABLE_CONTACT, null, value);
db.close();
Log.d(TAG, "user inserted" + id);
countUser++;
}
Ошибка:
E/SQLiteLog: (1) table Contact has no column named Name
E/SQLiteDatabase: Error inserting Login=fediafedia@ Name=fedia Pass=ihgldihgld
android.database.sqlite.SQLiteException: table Contact has no column named Name (code 1): , while compiling: INSERT INTO Contact(Login,Name,Pass) VALUES (?,?,?)
Скорее всего Вы создали таблицу, а потом в коде добавили еще какие-то поля, но не изменили версию базы данных.
Попробуйте повысить версию DATEBASE_VERSION
– в этом случае, при подключении к базе данных, будет вызван метод onUpgrade(...)
, который удалит старую таблицу и создаст новую (при этом данные, хранящиеся в таблице будут потеряны).
Как версия, скорее всего SQLite ругается на имя поля Name. В руководстве SQLite сказано следующее:
For most SQL code, your safest bet is to never use any English language word as the name of a user-defined object.
Ну то есть в качестве наименование ваших объектов/сущностей лучше не использовать вообще любые английские слова.
Я бы переименовал:
public static final String KEY_NAME = "field_name";
Ну и заодно, чтобы 2 раза не вставать в Android по умолчанию ключевое поле должно называться _ID (с лидирующим символом подчеркивания)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я сделал NavigationDrawer с помощью MaterialDrawer от Mike PenzОн отлично работает, но когда я пытаюсь заменить значки "FontAwesome" на "GoogleMaterial" или другие получаю...
мне нужно прочтитать именно fbx binary(не предлагать fbx ascii)(хотел написать конвертер именно для java)
Я сделал регистрацию, запихнул данные в sqlite, потом сделал вход, где проверял все данные с таблице, если пароль правильный, то пользователь...