Pessoal,
estou usando o derby embarcado para um apequena aplicação, preciso de um campo status numa das tabelas mas não existe o tipo, poderia dazer um campo integer com valor zero ou positivo, ou ainda negativo ou positivo, mas havia pensado em usar varchar ‘true’ e ‘false’, não achei no manual de referencia como fazer.
o que acham? insisto em usar varchar true e false ou uso um inteiro ? como seria para fazer com varchar?
Substituir tipo boolean no Derby
7 Respostas
Utilize um inteiro (1 e 0). É, de longe, a melhor abordagem e a que mais vejo ser utilizada quando não há campos Boolean no SGBD.
Se o banco de dados suportar inteiros de escopo menor (tipos SHORT, BIT, etc…), utilize-os para obter um melhor desempenho ainda…
Utilize um inteiro (1 e 0). É, de longe, a melhor abordagem e a que mais vejo ser utilizada quando não há campos Boolean no SGBD.
Se o banco de dados suportar inteiros de escopo menor (tipos SHORT, BIT, etc…), utilize-os para obter um melhor desempenho ainda…
exato!
você consegue utilizar o valor deste campo como boolean, diretamente com PreparedStatement.setBoolean e ResultSet.getBoolean.
ooo pessoal, vlw pela dica.
my english no good …rs
num ResultSet.getboolean, se o resultado vier zero(vazio) ele é false e se vier preenchido retorna true?
no PreparedStatement é a mesma coisa? no doc consegui achar, só diz que passa um bit ou boolean, então se passar um null ou zero ou valor negativo ou false, será guardado no banco o valor zero(false q quando for resgatado pelo ResultSet.getBoolean vem um ou zero) ?
tô certo ?
ooo pessoal, vlw pela dica.my english no good …rs
num ResultSet.getboolean, se o resultado vier zero(vazio) ele é false e se vier preenchido retorna true?
no PreparedStatement é a mesma coisa? no doc consegui achar, só diz que passa um bit ou boolean, então se passar um null ou zero ou valor negativo ou false, será guardado no banco o valor zero(false q quando for resgatado pelo ResultSet.getBoolean vem um ou zero) ?
tô certo ?
está correto.
0 = false
1 = true
galera muito obrigado.
isso não é nada intuitivo, o banco é todo em java e no java tem o tipo boolean, pq n no banco tb né?! economia porca…
aproveitando sábias sabedorias… o que acham de usar sempre as classes dos tipos primitivos ao invés dos primitivos? sempre aparece algo para usar , se é uma classe já tá meio caminho andando para a facilidade, apesar de não ser sempre. O consumo de memória, faz tb diferença?
Eu uso classes dos tipos primitivos quando quero que meus objetos possam aceitam valores nulos - o que é útil dependendo do banco de dados onde estou persistindo.
Quanto a uso de memória, etc, eu não sei se te dizer se influencia. Acho que uma abordagem legal é declarar os atributos das classes todos com classes (de tipos primitivos também).
Para uso interno dos métodos como: contadores, iteração em loop for, etc, acho que pode continuar sendo os primitivos mesmo.
As classes de tipos primitivos são também usadas com annotations - por isso que pegar o costume de declarar os atributos das classes desse modo é uma boa!
vou passar a usar sempre classes.
ontem lendo sobre o conteúdo de um curso, observei esse tal de annotations, vou dar uma procurada nisso tb…rs