Obter o Size (Tamanho) Permitido em uma Coluna no SQLite

716 views
Skip to first unread message

Felipe Costa

unread,
Aug 1, 2011, 7:50:17 AM8/1/11
to Android Brasil - Dev
Prezados,

Estou com o seguinte problema, preciso de verificar o tamanho (size)
das colunas das tabelas em um banco de dados SQLite para que possa ser
validado os dados inseridos nos campos, pois verifiquei que se inserir
dados a mais que o permitido pela coluna, essas dados são inseridos no
banco não ocorrendo nenhuma exceção, em Android verifiquei que somente
os seguintes metodos são disponibilizados para o cursor:

cursorTables.getColumnCount() -> Retorna o numero total de colunas;
cursorTables.getColumnName(columnIndex) -> Retorna o nome da coluna;
cursorTables.getColumnIndex(columnName) -> Retorna a possição (indice)
da coluna;
cursorTables.getColumnIndexOrThrow(columnName) -> Retorna a posição
(indice) da coluna com tratamento de exceção;
cursorTables.getCount() -> Retorna o numero de linhas do cursor

Verifiquei que em JAVA utilizando a conexão JDBC com o banco
utilizando um ResultSet possui o seguinte metodo para essa verificação
getDisplaySize(), porem como estamos utilizando a API do SQLite não
encontrei nenhuma forma ate o momento para esta solução, desta forma
gostaria de verificar se alguem ja passou por este problema e gostaria
de uma ajuda para esta solução.

Bruno Albuquerque

unread,
Aug 1, 2011, 8:23:03 AM8/1/11
to androidb...@googlegroups.com
Em termos gerais, você não precisa disso. Seu programa é o único que
deveria estar acessando a sua base e, portanto, ela tem que,
necessariamente, ser uma base conhecida. Sendo uma base conhecida,
você já sabe de antemão o tamanho de cada campo.

-Bruno

Alex Baule

unread,
Aug 1, 2011, 10:38:47 AM8/1/11
to androidb...@googlegroups.com

Sqlite nao tem validacao de campo, vc tem q fazer na sua aplicacao a verificacao antes de inserir.

Jonas Alves

unread,
Aug 1, 2011, 12:06:01 PM8/1/11
to androidb...@googlegroups.com
Colunas no SQLite não tem tamanho nem tipo. O mais próximo disso que tem no SQLite é affinity.

Da documentação oficial do SQLite:
SQLite uses a more general dynamic type system. In SQLite, the datatype of a value is associated with the value itself, not with its container.

Leia mais sobre isso em: http://www.sqlite.org/datatype3.html

2011/8/1 Felipe Costa <feli...@gmail.com>



--
Jonas Alves

Felipe Costa

unread,
Aug 1, 2011, 1:40:44 PM8/1/11
to Android Brasil - Dev
Prezados,

Refomulando a Duvida,
Possuo um sistema em android o qual conecta ao servidor FTP, realiza o
download de arquivos txt e apos realiza o processamento destes
arquivos da seguinte maneira, possui um arquivo o qual possui CREATE
das tabelas, apos os outros arquivos são valores de cargas para essas
tabelas que foram criadas, esse sistema ja esta funcionando
perfeitamente, o problema e que necessito validar se uma campo for
inserido em uma coluna do banco de dados seja validado se este valor é
maior que o permitido pela coluna do banco, ou seja ocorrer alguma
exceção, ou tambem se for possivel verificar qual e a quantidade
maxima que este campo suporte...

Ademar Alves de Oliveira

unread,
Aug 1, 2011, 1:43:43 PM8/1/11
to androidb...@googlegroups.com
Galerinha quem puder instalar esse app eu agradeceria :D é primeiro que eu fiz que esta no market :D

seg link


ele tem menos de 1 MB 

Valeuzão ;D

Eduardo Stuart

unread,
Aug 1, 2011, 2:07:35 PM8/1/11
to androidb...@googlegroups.com
Instalado..ficou bacana ;P

Ja passei do segundo level

Eduardo Stuart

unread,
Aug 1, 2011, 2:18:50 PM8/1/11
to androidb...@googlegroups.com
tem um pala na tela de configurações (galaxy S).

quando eu volto a tela, ele da um reset no app..é assim mesmo?

Alex Baule

unread,
Aug 1, 2011, 3:07:25 PM8/1/11
to androidb...@googlegroups.com

Como eu disse, o sqlite seja pra android ou qquer outro sistema, nao valida tamanho de coluna, se vc dizer que a coluna é int, ele aceita char... se vc dizer q é char(255) e colocar um char de 10000 ele aceita.

Vc tem que fazer um parse na hora do insert, e validar ANTES de inserir...

Sacou?

Felipe Costa

unread,
Aug 1, 2011, 4:01:04 PM8/1/11
to Android Brasil - Dev
Ola Alex,
Não entendi muito bem...
Estou com esse problema em um projeto na empresa o qual trabalho,
pois como o sistema em Android é alimentado por arquivos txt, desta
forma
se possuir o seguinte CREATE:

CREATE TABLE USUARIO(Cod_usuario nvarchar(1) NULL,Nom_usuario
nvarchar(5) NULL,Dsc_senha_usuario nvarchar(10) NULL,Cod_promotor
nvarchar(9) NULL,Cod_destinatario_mensagem nvarchar(9)
NULL,Ind_usuario_ativo nvarchar(1) NULL)

Apos o arquivo Usuario.txt:
1|FELIPE|SENHA123|COD123|DEST123|IND123
ser processado, Eu não posso permitir que em tempo de execução um
arquivo com Cod_usuario>1 seja inserido...

Entao pelo que posso ver não é possivel esta validação???
OBS: -O sistema esta funcionando normalmente;
-Eu nunca sei o que esta vindo nos arquivos .txt

On Aug 1, 4:07 pm, Alex Baule <alexwba...@gmail.com> wrote:
> Como eu disse, o sqlite seja pra android ou qquer outro sistema, nao valida
> tamanho de coluna, se vc dizer que a coluna é int, ele aceita char... se vc
> dizer q é char(255) e colocar um char de 10000 ele aceita.
>
> Vc tem que fazer um parse na hora do insert, e validar ANTES de inserir...
>
> Sacou?

Ivan Prado

unread,
Aug 1, 2011, 4:17:53 PM8/1/11
to androidb...@googlegroups.com
Eu não entendo isso... por quê é possível especificar um tamanho e tipo de dados pra SQLite então? Meramente informativo?

Alex Baule

unread,
Aug 1, 2011, 4:18:07 PM8/1/11
to androidb...@googlegroups.com

Vc tem q pegar o arquivo usuario.txt e antes de inserir ele, valida-lo via seu app, dar split por | por exemplo, e validar cada campo....

Jonas Alves

unread,
Aug 1, 2011, 6:27:07 PM8/1/11
to androidb...@googlegroups.com

Pra ser compatível com a linguagem SQL.

On Aug 1, 2011 5:18 PM, "Ivan Prado" <nai...@yahoo.com.br> wrote:

Alex Baule

unread,
Aug 1, 2011, 8:24:33 PM8/1/11
to androidb...@googlegroups.com

http://www.sqlite.org/faq.html

Item 3 e 9.

Em 01/08/2011 19:27, "Jonas Alves" <jon...@gmail.com> escreveu:

Ademar Alves de Oliveira

unread,
Aug 2, 2011, 11:21:48 AM8/2/11
to androidb...@googlegroups.com
LoL

Valeuzão Cara :D

kkkkkk 

eu fiz o nivel 5 em 43 segundos =P


Em 1 de agosto de 2011 15:07, Eduardo Stuart <stuart....@gmail.com> escreveu:
Instalado..ficou bacana ;P

Ja passei do segundo level



--
Ademar Alves de Oliveira
T +55 11 6232 3604
São Paulo, SP, Brazil
ademar...@gmail.com

Felipe Costa

unread,
Aug 3, 2011, 7:10:15 AM8/3/11
to Android Brasil - Dev
Obrigado a todos pela ajuda.

On Aug 1, 9:24 pm, Alex Baule <alexwba...@gmail.com> wrote:
> http://www.sqlite.org/faq.html
>
> Item 3 e 9.
> Em 01/08/2011 19:27, "Jonas Alves" <jona...@gmail.com> escreveu:
Reply all
Reply to author
Forward
0 new messages