DEV Community

Cover image for Cadê meus zeros? Sobre tipos em banco de dados.
Lucas Cruz
Lucas Cruz

Posted on

Cadê meus zeros? Sobre tipos em banco de dados.

Estava eu codando, mais um dia comum, quando de repente acontece um erro.

O valor que deveria ser salvo aparece na interface diferente do valor que eu digitei, nesse momento apertei ctrl+c para parar a execução do código, e rodei ele outra vez com npx expo start.

O banco de dados recarregou e ali estava outra vez o valor errado, eu estava testando a inserção de um código e como teste usei "0000000000" porém o que aparecia na lista era apenas 0.

Meme algo de errado não está certo

Depois de reiniciar a segunda coisa que pensei foi que em algum lugar do código deve está convertendo para inteiro (Sim, eu estava usando JavaScript), mas ao analisar o código parecia tudo ok.

Até lembrar do tipo que estava usando no banco de dados, os Ids eram do tipo inteiro. Então tudo fez sentido! Não posso salvar dados que tenham zeros a esquerda dessa forma:

tx.executeSql(
'CREATE TABLE IF NOT EXISTS Machine (id INTEGER PRIMARY KEY, is_available INTEGER)',
[], 
()=>{console.log("successful create Machine")}, 
()=>{console.error("error: create Machine")})

Enter fullscreen mode Exit fullscreen mode

Para resolver essa questão bastava modificar o tipo para texto.

tx.executeSql(
'CREATE TABLE IF NOT EXISTS Machine (id TEXT PRIMARY KEY, is_available INTEGER)',
[], 
()=>{console.log("successful create Machine")}, 
()=>{console.error("error: create Machine")})

Enter fullscreen mode Exit fullscreen mode

Agora sim o app consegue adicionar itens com zeros a esquerda:

Interface com o item 000000000 adicionado

Concluindo

  • É sempre importante verificar os tipos de dados que está usando no banco de dados, para não ocorrer erros como este e perder seus zeros ou pior.
  • Apesar parecer intuitivo usar um tipo numérico como inteiro prefira usar texto quando o número que for usar não for usado para cálculos ou seja que não precisem necessariamente ser um número.
  • Façam testes.

Top comments (0)