Проблемы со вставками после добавления новых таблиц в базу данных - PullRequest
0 голосов
/ 17 апреля 2020

ОБНОВЛЕНИЕ:

override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
    if (oldVersion < 3) {
        db?.execSQL(ARTIGO_TABLE_NAME);
    }
    if (oldVersion < 3) {
        db?.execSQL(PAIS_TABLE_NAME);
        db?.execSQL("INSERT INTO $PAIS_TABLE_NAME values('PT','Portugal')")
    }
    if (oldVersion < 3) {
        db?.execSQL(POSTAL_TABLE_NAME);
    }

}

Я пытался добавить новые таблицы недавно, но после добавления этих новых таблиц вставка в мою старую таблицу больше не работает.

Я уже очистил свою БД и переустановил приложение, но когда я пытаюсь вставить новые данные (клиента) в мою старую таблицу, она не работает и не появляется сообщение об ошибке.

БД код (client таблица - моя первая таблица, остальные - новые таблицы):

override fun onCreate(db: SQLiteDatabase?) {
    val CREATE_CLIENTES_TABLE = ("CREATE TABLE IF NOT EXISTS $CLIENTES_TABLE_NAME (" +
            "$DB_Cliente_Codigo  INTEGER UNIQUE PRIMARY KEY," +
            "$DB_Cliente_Nome VARCHAR(40)," +
            "$DB_Cliente_Morada VARCHAR(40)," +
            "$DB_Cliente_Localidade VARCHAR(30)," +
            "$DB_Cliente_Postal VARCHAR(8)," +
            "$DB_Cliente_Contribuinte VARCHAR(15)," +
            "$DB_Cliente_Telefone VARCHAR(15)," +
            "$DB_Cliente_Pais VARCHAR(3))")

    val CREATE_ARTIGO_TABLE = ("CREATE TABLE IF NOT EXISTS $ARTIGO_TABLE_NAME (" +
            "$DB_ARTIGO_CODIGO INTEGER UNIQUE PRIMARY KEY," +
            "$DB_ARTIGO_ABREVIADO VARCHAR (20), " +
            "$DB_ARTIGO_EXTENSO VARCHAR (45), " +
            "$DB_ARTIGO_FAMILIA INTEGER (3)," +
            "$DB_ARTIGO_IVA INTEGER (2)," +
            "$DB_ARTIGO_PRECO INTEGER," +
            "$DB_ARTIGO_PRECO_2 INTEGER," +
            "$DB_ARTIGO_PRECO_3 INTEGER )")

    val CREATE_PAIS_TABLE = ("CREATE TABLE IF NOT EXISTS $PAIS_TABLE_NAME (" +
            "$DB_ABR_PAIS  VARCHAR (3)," +
            "$DB_DESC_PAIS VARCHAR)")

    val CREATE_POSTAL_TABLE = ("CREATE TABLE IF NOT EXISTS $POSTAL_TABLE_NAME (" +
            "$DB_CODIGO_POSTAL VARCHAR (8)," +
            "$DB_DESCRICAO_POSTAL VARCHAR (30))")

    db?.execSQL(CREATE_CLIENTES_TABLE)
    db?.execSQL(CREATE_POSTAL_TABLE)
    db?.execSQL(CREATE_PAIS_TABLE)
    db?.execSQL(CREATE_ARTIGO_TABLE)
    db?.execSQL("INSERT INTO $PAIS_TABLE_NAME values('PT','Portugal')")

Я не изменил свой метод на addclient, он тот же, и он отлично работал

fun addClient(mCtx: Context, clientes: clientes) {
    val values = ContentValues()
    values.put(DB_Cliente_Codigo, clientes.codigo_cliente)
    values.put(DB_Cliente_Nome, clientes.nome_cliente)
    values.put(DB_Cliente_Morada, clientes.morada_cliente)
    values.put(DB_Cliente_Localidade, clientes.localidade_cliente)
    values.put(DB_Cliente_Postal, clientes.postal_cliente)
    values.put(DB_Cliente_Contribuinte, clientes.contribuinte_cliente)
    values.put(DB_Cliente_Telefone, clientes.telefone_cliente)
    values.put(DB_Cliente_Pais, clientes.pais_cliente)
    val db = this.writableDatabase

    try {
        db.insert(CLIENTES_TABLE_NAME, null, values)
        Toast.makeText(mCtx, "Cliente Adicionado", Toast.LENGTH_SHORT).show()
    } catch (e: Exception) {
        Toast.makeText(mCtx, e.message, Toast.LENGTH_SHORT).show()

    }
    db.close()
}

1 Ответ

0 голосов
/ 17 апреля 2020

Иногда это происходит, когда вы меняете схему БД и не обновляете версию. Допустим, вы сначала создали БД и передали версию 1. Если вы измените БД в следующий раз, вы должны обновить свою версию с 1 до 2. Попробуйте это и дайте мне знать, если она работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...