Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Como popular a tabela após sua criação

Gostaria de saber como faço para após ter criado a tabela, inserir os dados nela somente na primeira vez que o app for aberto para não haver dados duplicados. Minha intenção é já popular a tabela após sua criação, ou seja, fazer algo desse tipo:

  DatabaseValues.bancoDeDados.transaction(function(transacao){
      transacao.executeSql('CREATE TABLE IF NOT EXISTS pessoa(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, nome VARCHAR(300));', [])

      transacao.executeSql('INSERT INTO pessoa(nome) VALUES (?)', ['lucas'])
    });

Mas só quero fazer isso na primeira vez que o app for aberto para não ficar duplicando os dados toda hora que o app for iniciado. Obrigado;

2 respostas

Oi Lucas.

Faça uma consulta antes do seu insert e veja se o dado já foi salvo. Se o dado já foi salvo, vc não precisa executar seu SQL, e se ainda não estiver salvo você pode rodar seu SQL.

solução!

Uma forma de fazer isso seria a seguinte:

var nome = 'lucas';
transacao.executeSql('select * from pessoa where nome = ?', [nome], gravarNome);

function gravarNome(tx, results) {

    if (typeof results == "undefined") {
        //Nao houve retorno de dados
    } else {
        var dados = results.rows.length;
        //Houve retorno mas nao localizou o nome pesquisado
        if (dados==0){
            tx.executeSql('INSERT INTO pessoa(nome) VALUES (?)', [nome]);
        } else {
            //O nome pesquisado existe
        }
    }

}