Problemas com Checkbox e MySQL

Oi Pessoal,
Antes de mais nada, quero dizer que mesmo estando utilizando o forum pela primeira vez tenho usado o mesmo a muito tempo como fonte de consulta e tem me ajudado muito, infelizmente para o problema que estou enfrentando nao encontrei solucao (ate momento =)
Estou criando um banco de dado para plantas e nele tenho varias informacoes booleanas, quando eu digo varias sao muitas mesmo, o plano era linkar cada campo com um checkbox usando o blind e mastertable (a aplicacao foi criada usando o master/detail sample form do NetBeans) o problema como voces sabem eh que o MySQL nao aceita boolean, somente tiny, que mesmo sendo 0 e 1 nao eh reconhecido no java como sendo verdadeiro ou falso.
Minha questao eh, como mudar o true e false do java para 0 e 1 quando eu for gravar e como mudar o 0 e 1 de quando eu ler para true e false quando eu for montar a tela???

Desde ja agradeco a participacao de todos.
Abracos,
Icaro

Eu trabalho com MySQL 5.1 e uso boolean normalmente.

http://dev.mysql.com/doc/refman/4.1/pt/maxdb-reserved-words.html

Agora, voltando ao foco do tópico…

Se estiver usando PreparedStatement passe boolean normalmente, porém no banco você pode trabalhar com 0 e 1.
(Faço isso no Oracle)

Exemplo:

Tabela criada no MySQL:

CREATE TABLE TESTE.TABELATESTE (
CAMPOBOOLEAN BOOLEAN
)
ENGINE = InnoDB;

    ps = connection.prepareStatement("INSERT INTO TABELATESTE (CAMPOBOOLEAN) VALUES (?)");
    ps.setBoolean(1, true);

Neste caso irá inserir 1;

Caso passe false irá inserir 0 no campo ‘CAMPOBOOLEAN’.

Espero ter ajudado.

Abraço!

Ola renanedpedroso,
Valeu pela resposta, uma duvida, eu estou usando o MySql 5.1 tambem, mas quando olho pelo NetBeans os campos booleans sao mostrados como bin e quando olho pelo SQLyog sao mostrados como tiny, como eu sabia que ate a versao 4 do MySql nao aceitava boolean eu achei que ainda nao estava aceitando.
Entao a pergunta muda, eh possivel passar boolean direto para o MySql 5 usando o NetBeans?

O erro que estou tendo quando tento eh:

Exception in thread “AWT-EventQueue-0” org.jdesktop.beansbinding.PropertyResolutionException: Exception invoking method public void org.jdesktop.swingbinding.adapters.AbstractButtonAdapterProvider$Adapter.setSelected(boolean) on org.jdesktop.swingbinding.adapters.AbstractButtonAdapterProvider$Adapter@1d5e499
at org.jdesktop.beansbinding.BeanProperty.invokeMethod(BeanProperty.java:791)
at org.jdesktop.beansbinding.BeanProperty.write(BeanProperty.java:891)
at org.jdesktop.beansbinding.BeanProperty.setValue(BeanProperty.java:571)
at org.jdesktop.beansbinding.Binding.refreshUnmanaged(Binding.java:1229)
at org.jdesktop.beansbinding.Binding.refresh(Binding.java:1207)
at org.jdesktop.beansbinding.AutoBinding.tryRefreshThenSave(AutoBinding.java:162)
at org.jdesktop.beansbinding.AutoBinding.sourceChangedImpl(AutoBinding.java:227)
at org.jdesktop.beansbinding.Binding.sourceChanged(Binding.java:1411)
at org.jdesktop.beansbinding.Binding.access$1200(Binding.java:38)
at org.jdesktop.beansbinding.Binding$PSL.propertyStateChanged(Binding.java:1618)
at org.jdesktop.beansbinding.PropertyHelper.firePropertyStateChange(PropertyHelper.java:212)
at org.jdesktop.beansbinding.ELProperty.notifyListeners(ELProperty.java:688)
at org.jdesktop.beansbinding.ELProperty.access$800(ELProperty.java:155)
at org.jdesktop.beansbinding.ELProperty$SourceEntry.processSourceChanged(ELProperty.java:312)
at org.jdesktop.beansbinding.ELProperty$SourceEntry.sourceChanged(ELProperty.java:326)
at org.jdesktop.beansbinding.ELProperty$SourceEntry.propertyChange(ELProperty.java:333)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:339)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:276)
at org.jdesktop.swingbinding.adapters.BeanAdapterBase.firePropertyChange(BeanAdapterBase.java:112)
at org.jdesktop.swingbinding.adapters.JTableAdapterProvider$Adapter$Handler.tableSelectionChanged(JTableAdapterProvider.java:81)
at org.jdesktop.swingbinding.adapters.JTableAdapterProvider$Adapter$Handler.valueChanged(JTableAdapterProvider.java:91)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:167)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:147)
at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:194)
at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:388)
at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:398)
at javax.swing.DefaultListSelectionModel.setSelectionInterval(DefaultListSelectionModel.java:442)
at javax.swing.JTable.changeSelectionModel(JTable.java:2312)
at javax.swing.JTable.changeSelection(JTable.java:2377)
at javax.swing.plaf.basic.BasicTableUI$Handler.adjustSelection(BasicTableUI.java:1091)
at javax.swing.plaf.basic.BasicTableUI$Handler.mousePressed(BasicTableUI.java:1014)
at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:263)
at java.awt.Component.processMouseEvent(Component.java:6035)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3983)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Caused by: java.lang.IllegalArgumentException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jdesktop.beansbinding.BeanProperty.invokeMethod(BeanProperty.java:782)
… 51 more

Amigo não sei com relação ao NetBeans + MySQL pois uso o MySQL Tools para gerenciar meu Banco de Dados, mas e seu código, como está?

Entao eu estou usando master/detail sample form do NetBeans, para ficar mais rapido eu tenho uma mastertable com todos os campos ai eu utilizo o bind para fazer um link entre o objeto no caso o Checkbox e a master table, dessa maneira todo o resto do codigo e gerado pelo netbeans. O problema eh que fazendo um bind eu nao posso mudar o conteudo do bind, ou seja, eu nao posso fazer uma verifcacao se eh 0 ou 1 e escrever true ou false ou vice versa porque ocorre simultaneamente.
O que eu fiz antes foi criar uma caixa de texto e alterar o veradeiro ou faso nessa caixa para 0 ou 1 e depois fazer o bind da caixa de texto com o mastertable, mas com sao centenas (exagerando um pouco) de checkbox fazer isso agora eh loucura.
E o problema eh que ja estou na metade dessa tela utilizando o master/detail sample form, para fazer tudo outro vez acessando o banco de dados diretamente.

renanedpedroso, vou tentar usar o mysql tools para gerar o meu banco de dados porque pelo SQLyog eu nao estou conseguindo colocar true e false do mesmo jeito, somente 0 e 1.

renanedpedroso, estou tentando mudar as minhas variaves de tiny para boolean com o comando abaixo:

ALTER TABLE containernurseriesonline.plants MODIFY COLUMN COLORLABEL BOOLEAN DEFAULT NULL;

Ele executa ok, mas nada muda, continua mostrando tiny e so aceitando 0 e 1, voce pode por favor me mandar um exemplo de tabela criada por voce com boolean e me dizer como voce coloca true ou false ao contrario de 0 ou 1?!
Eu vi na documentacao que na versao 4.1 pra cima do mySql aceita mesmo boolean, mas por algum motivo estou tendo problemas com isso.

Desde ja agradeco,
Icaro

CREATE TABLE TESTE.TABELATESTE (
CAMPOBOOLEAN BOOLEAN
)
ENGINE = InnoDB;

É assim que eu faço.

Abraço!

A pouco tempo passei por esse mesmo problema e era uma coisa simple!
o que eu estava errando era que pro padrão o jTable “Master table” quando identifica que o campo é booleano e já
coloca um JcheckBox na coluna, isso dispensando a colocação de um outro.
espero que ajude, e boa sorte e abraços :smiley: