Consulta no MySQL pelo NetBeans

30 respostas
Suellen_Susu

Estou fazendo um TCC em NetBeans, onde estou montando um Quiz, de perguntas e respostas. Ja fiz a conexão com o banco de dados, onde trabalho com apenas um form. Só que esse form tem que trabalhar com três níveis: fácil, médio e difícil. Porém, ele só faz a conexão com o banco se eu colocar na query o seguinte:

String query = “Select * from facil where id = '” +pontos.id+"’";

No caso acima, ele pegaria somente as questões da tabela facil. Só que se eu fiz o seguinte: criei uma variavel tipo String chamada nivel, na classe pontos, que armazena o nivel e busca no banco a tabela correspondente. Então, na query fiz o seguinte:

String query = “Select * from '”+pontos.nivel+"’ where id = ‘" +pontos.id+"’";

Mas na execução do programa, ele executa apenas o form, sem a conexão com o banco. Alguém podria me indicar o erro?

Grande abraço e obrigada!

30 Respostas

Jader_Bittencourt

Olá Suellen,

Pelo que entendi da sua pergunta, pela lógica está certo, pois na execução, seria feita a substituição da tua variável pontos.nivel pelo nome respectivo da tabela referente ao nível.

Tu terias como postar o teu código? Talvez tu tenhas algum problema em termos de sintaxe.

sf.marcius

pq vc não faz um tabela única em vez de criar uma tabela de cada nivel?
vc poderia criar uma tabela única e colocar uma coluna a mais chamada “nivel” onde o valor poderia ser 1, 2 ou 3
1 =facil
2 = médio
3 = difícil

outra coisa… usa Prepared Statements em vez de usar concatenação de strings pra montar a query.

o select ficaria assim daeh:

PreparedStatement stm = con.prepareStatement("Select * from quiz where id = ? and nivel = ?");
stm.setLong(1, 10); // coloque o id
stm.setInt(2, 1); // 1= facil

Edit: Ainda, como é um TCC, vc poderia criar uma arquitetura que usasse hibernate na tua app, deixando pra ele essa parte de criação e gerenciamento de conexoes, além de facilitar as consultas
[]s

Suellen_Susu

Respondendo a primeira resposta, da pra enviar o código sim, pois acho que é um pequeno erro, porque não esta dificil resolver.

E respondendo a segunda resposta,não tem como por tudo em uma tabela, pois cada pergunta tem 4 alternativas mais a resposta correta. Se colocasse em uma tabela só iria bagunçar muito, pois teria que selecionar as perguntas, alternativas e resposas específicas de cada nível.

Jader_Bittencourt

Se não houver problema em postar o código, coloca ele aí pra nós :slight_smile:

Suellen_Susu

ta ai o código:

@SuppressWarnings("unchecked")
    public void atualizaCampo(){
    if(BD.getConnection())
               {
               
                try
                {                  
                     String query = "Select * from '" +pontos.nivel+"' where id = '" +pontos.id+"'";
                     BD.setResultSet(query);
                     while (BD.resultSet.next())
                     {
                         pergunta=(BD.resultSet.getString("pergunta"));
                         alt1=(BD.resultSet.getString("alt1"));
                         alt2=(BD.resultSet.getString("alt2"));
                         alt3=(BD.resultSet.getString("alt3"));
                         alt4=(BD.resultSet.getString("alt4"));
                         resposta=(BD.resultSet.getString("resposta"));
                         cont=(BD.resultSet.getInt("id"));
                     }
                     if (cont!=pontos.id){                      
                         JOptionPane.showMessageDialog(null, "Fim de Jogo");                                                                      
                         this.dispose();
                         new recordes().setVisible(true);                        
                     }
                }
                catch(java.lang.Exception ex)
                {
                    ex.printStackTrace();
                }
               }
}
Suellen_Susu

o código acima é o da conexão, ja o do botão responder, do form da pergunta esta assim:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
// TODO add your handling code here:
    
    if(jRadioButton1.isSelected()){
    if (jRadioButton1.getText().equals(resposta))
    {
        pontos.ponto=pontos.ponto+1;
        JOptionPane.showMessageDialog(null, "Resposta Correta");
    }else{
         JOptionPane.showMessageDialog(null, "Resposta Incorreta");
    }
        
    }
    
    if(jRadioButton2.isSelected()){
    if (jRadioButton2.getText().equals(resposta))
    {
        pontos.ponto=pontos.ponto+1;
        JOptionPane.showMessageDialog(null, "Resposta Correta");
    }else{
         JOptionPane.showMessageDialog(null, "Resposta Incorreta");
    }
        
    }
    
    if(jRadioButton3.isSelected()){
    if (jRadioButton3.getText().equals(resposta))
    {
        pontos.ponto=pontos.ponto+1;
        JOptionPane.showMessageDialog(null, "Resposta Correta");
    }else{
         JOptionPane.showMessageDialog(null, "Resposta Incorreta");
    }
        
    }
    
    if(jRadioButton4.isSelected()){
    if (jRadioButton4.getText().equals(resposta))
    {
        pontos.ponto=pontos.ponto+1;
        JOptionPane.showMessageDialog(null, "Resposta Correta");
    }else{
         JOptionPane.showMessageDialog(null, "Resposta Incorreta");
    }
        
    }
    pontos.id++;
    new NewJFrame().setVisible(true);
    this.dispose();
    
    
}
Suellen_Susu

e a classe pontos.java possui as seguintes variaveis:

public class pontos { public static int ponto=0, id=1; public static String nivel="", nome=""; }

sf.marcius

Suellen_Susu:
Respondendo a primeira resposta, da pra enviar o código sim, pois acho que é um pequeno erro, porque não esta dificil resolver.

E respondendo a segunda resposta,não tem como por tudo em uma tabela, pois cada pergunta tem 4 alternativas mais a resposta correta. Se colocasse em uma tabela só iria bagunçar muito, pois teria que selecionar as perguntas, alternativas e resposas específicas de cada nível.

as estruturas das tabelas (colunas) são diferentes?
nao vejo por que ficaria bagunçado… a menos que a estrutura de cada tabela (facil, medio, difícil) seja bem diferente.

posta o código e se possível, os create tables… :slight_smile:

[]s

Suellen_Susu

esta é o código do form principal, que é o menu:

private void jCheckBoxMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                                   
// TODO add your handling code here:
    
    new NewJFrame().setVisible(true);
    pontos.nivel="facil";
    this.dispose();
}                                                  

private void jCheckBoxMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {                                                   
// TODO add your handling code here:
    new NewJFrame().setVisible(true);
    pontos.nivel="medio";
    this.dispose();
}                                                  

private void jCheckBoxMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {                                                   
// TODO add your handling code here:
    new NewJFrame().setVisible(true);
    pontos.nivel="dificil";
    this.dispose();
}

ja das tabelas (como MySQL) está assim:

CREATE DATABASE /*!32312 IF NOT EXISTS*/ quiz;
USE quiz;

--
-- Table structure for table `quiz`.`dificil`
--

DROP TABLE IF EXISTS `dificil`;
CREATE TABLE `dificil` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `alt1` varchar(200) NOT NULL default '',
  `alt2` varchar(200) NOT NULL default '',
  `alt3` varchar(200) NOT NULL default '',
  `alt4` varchar(200) NOT NULL default '',
  `resposta` varchar(200) NOT NULL default '',
  `pergunta` varchar(500) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `quiz`.`dificil`
--

/*!40000 ALTER TABLE `dificil` DISABLE KEYS */;
INSERT INTO `dificil` (`id`,`alt1`,`alt2`,`alt3`,`alt4`,`resposta`,`pergunta`) VALUES 
 (1,'preocupa?§?£o com a objetividade','irracionalismo','volta ao passado','moralismo','preocupa?§?£o com a objetividade','O realismo foi um movimento de:'),
 (2,'reprodutor','produtor','aut?³trofo','heter?³trofo','aut?³trofo','Seres vivos (plantas) que produzem seu pr?³prio alimento s?£o chamados de:'),
 (3,'a rela?§?£o que vai existir entre as palavras de l?­ngua','o sentido que a palavra possu?­','palavras que comp?µe o idioma','palavra que possu?­ duplo sentido','a rela?§?£o que vai existir entre as palavras da l?­ngua','Podemos definir sintaxe, em L?­ngua Portuguesa, como:');
/*!40000 ALTER TABLE `dificil` ENABLE KEYS */;


--
-- Table structure for table `quiz`.`facil`
--

DROP TABLE IF EXISTS `facil`;
CREATE TABLE `facil` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `alt1` varchar(200) NOT NULL default '',
  `alt2` varchar(200) NOT NULL default '',
  `alt3` varchar(200) NOT NULL default '',
  `alt4` varchar(200) NOT NULL default '',
  `resposta` varchar(200) NOT NULL default '',
  `pergunta` varchar(500) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `quiz`.`facil`
--

/*!40000 ALTER TABLE `facil` DISABLE KEYS */;
INSERT INTO `facil` (`id`,`alt1`,`alt2`,`alt3`,`alt4`,`resposta`,`pergunta`) VALUES 
 (1,'Brasil','Argentina','It????lia','Fran??§a','Brasil','Qual pa??­s ??© treta campe??£o mundial de futebol'),
 (2,'8','4','6','2','4','Qual a raiz quadrada de 16'),
 (3,'Alemanha','Espanha','Brasil','Africa do Sul','Africa do Sul','Qual o pa??­s sede da copa do mundo de 2010');
/*!40000 ALTER TABLE `facil` ENABLE KEYS */;


--
-- Table structure for table `quiz`.`medio`
--

DROP TABLE IF EXISTS `medio`;
CREATE TABLE `medio` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `alt1` varchar(200) NOT NULL default '',
  `alt2` varchar(200) NOT NULL default '',
  `alt3` varchar(200) NOT NULL default '',
  `alt4` varchar(200) NOT NULL default '',
  `resposta` varchar(200) NOT NULL default '',
  `pergunta` varchar(500) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `quiz`.`medio`
--

/*!40000 ALTER TABLE `medio` DISABLE KEYS */;
INSERT INTO `medio` (`id`,`alt1`,`alt2`,`alt3`,`alt4`,`resposta`,`pergunta`) VALUES 
 (1,'As crian?§as chegaram em casa.','Pedro e Jo?£o s?£o muito amigos.','Roubaram meu carro novo.','Comprei doces aos alunos.','Comprei doces aos alunos.','O sujeito oculto ou impl?­cito pode ser encontrado na frase:'),
 (2,'Darwinista','Lamarkista','Evolucionista','N.D.A','Lamarkista','A \"lei do uso e desuso\", ?© uma teoria:'),
 (3,'matriz linha','matriz coluna','diagonal secund??ria','diagonal principal','diagonal principal','Numa matriz, os elementos aij tais que i=j formam a:');
/*!40000 ALTER TABLE `medio` ENABLE KEYS */;


--
-- Table structure for table `quiz`.`recordes`
--

DROP TABLE IF EXISTS `recordes`;
CREATE TABLE `recordes` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `nome` varchar(45) NOT NULL default '',
  `nivel` varchar(10) NOT NULL default '',
  `pontuacao` int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
sf.marcius

o erro está nessa linha:

String query = "Select * from '"+pontos.nivel+"' where id = '" +pontos.id+"'";

tem que ser:

String query = "Select * from " + pontos.nivel + " where id = " +pontos.id;

sem as aspas simples. aspas simples vc coloca apenas em varchars (string).

mas repito… vc pode fazer melhor :slight_smile:

edit: teu modelo de banco não tá otimizado. vc possui tres tabelas exatamente iguais, apenas com nomes diferentes :slight_smile:
poderia, sim, criar apenas mais uma coluna “nivel”. não bagunçaria nada teu código. :wink:
Edit 2: com hibernate, vc faria esse quiz em poucas horas :slight_smile:
[]s

Jader_Bittencourt

sf.marcius:
o erro está nessa linha:

String query = "Select * from '"+pontos.nivel+"' where id = '" +pontos.id+"'";

tem que ser:

String query = "Select * from " + pontos.nivel + " where id = '" +pontos.id+"'";

sem as aspas simples em volta do nome da tabela

mas repito… vc pode fazer melhor :slight_smile:

edit: teu modelo de banco não tá otimizado. vc possui tres tabelas exatamente iguais, apenas com nomes diferentes :slight_smile:
poderia, sim, criar apenas mais uma coluna “nivel”. não bagunçaria nada teu código. :wink:
[]s

Concordo com o sf.marcius, de fato, tu poderia otimizar o teu banco :wink:

Suellen_Susu

omuito obrigrada pelos “avisos”, mas não posso enrrolar muito com o TCC, tenho que entregá-lo começo de Junho! e a respeito dee tirar as aspas simples,~não deu certo, pois esta ocorrendo o mesmo erro!

sf.marcius

eu tinha editado a msg…
vc tem que tirar as aspas do pontos.id também, pois pontos.id é int

olha a msg de cima de novo

qquer coisa, manda o texto da exceção…

Jader_Bittencourt

Desculpe a pergunta, mas vc está fazendo a chamada da conexão com o banco no seu form?

Suellen_Susu

init: deps-jar: compile-single: run-single: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where id = '1'' at line 1 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723) at com.mysql.jdbc.Connection.execSQL(Connection.java:3250) at com.mysql.jdbc.Connection.execSQL(Connection.java:3179) at com.mysql.jdbc.Statement.executeQuery(Statement.java:1207) at BD.setResultSet(BD.java:91) at NewJFrame.atualizaCampo(NewJFrame.java:40) at NewJFrame.<init>(NewJFrame.java:23) at menu.jCheckBoxMenuItem1ActionPerformed(menu.java:180) at menu.access$100(menu.java:16) at menu$2.actionPerformed(menu.java:86) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:291) at javax.swing.AbstractButton.doClick(AbstractButton.java:357) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1225) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1266) at java.awt.Component.processMouseEvent(Component.java:6134) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5899) at java.awt.Container.processEvent(Container.java:2023) at java.awt.Component.dispatchEventImpl(Component.java:4501) at java.awt.Container.dispatchEventImpl(Container.java:2081) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895) at java.awt.Container.dispatchEventImpl(Container.java:2067) at java.awt.Window.dispatchEventImpl(Window.java:2458) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) java.lang.NullPointerException at NewJFrame.atualizaCampo(NewJFrame.java:41) at NewJFrame.<init>(NewJFrame.java:23) at menu.jCheckBoxMenuItem1ActionPerformed(menu.java:180) at menu.access$100(menu.java:16) at menu$2.actionPerformed(menu.java:86) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:291) at javax.swing.AbstractButton.doClick(AbstractButton.java:357) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1225) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1266) at java.awt.Component.processMouseEvent(Component.java:6134) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5899) at java.awt.Container.processEvent(Container.java:2023) at java.awt.Component.dispatchEventImpl(Component.java:4501) at java.awt.Container.dispatchEventImpl(Container.java:2081) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895) at java.awt.Container.dispatchEventImpl(Container.java:2067) at java.awt.Window.dispatchEventImpl(Window.java:2458) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) CONSTRUÍDO COM SUCESSO (tempo total: 4 segundos)

Suellen_Susu

Desculpe a pergunta, mas vc está fazendo a chamada da conexão com o banco no seu form?

respondendo a pergunta, sim, a conexão é feita no form de pergunta.

sf.marcius

como eu disse antes, eu tinha editado a msg anterior pois vi que pontos.id é int…
sendo assim, vc tem que tirar as aspas do pontos.id também

String query = "Select * from " + pontos.nivel + " where id = " +pontos.id;
Suellen_Susu

se for as aspas simples, ñ é, pois ñ deu certo d novo…

Jader_Bittencourt

Tecnicamente, seu id é um int. Tente tirar as aspas simples:

String query = "Select * from " +pontos.nivel+" where id = " +pontos.id;
sf.marcius

vc leu o motivo do erro?
aquele ‘1’ nao pode ser entre aspas! ele é int. :wink:

mande essa sua linha novamente para vermos como ela está agora no seu código…
[]s

Suellen_Susu

tmb ñ da!

Jader_Bittencourt

O erro mudou? Se mudou joga ele aí pra nós :wink:

Suellen_Susu

init: deps-jar: compile-single: run-single: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' where id = 1' at line 1 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723) at com.mysql.jdbc.Connection.execSQL(Connection.java:3250) at com.mysql.jdbc.Connection.execSQL(Connection.java:3179) at com.mysql.jdbc.Statement.executeQuery(Statement.java:1207) at BD.setResultSet(BD.java:91) at NewJFrame.atualizaCampo(NewJFrame.java:40) at NewJFrame.<init>(NewJFrame.java:23) at menu.jCheckBoxMenuItem3ActionPerformed(menu.java:194) at menu.access$300(menu.java:16) at menu$4.actionPerformed(menu.java:104) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:291) at javax.swing.AbstractButton.doClick(AbstractButton.java:357) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1225) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1266) at java.awt.Component.processMouseEvent(Component.java:6134) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5899) at java.awt.Container.processEvent(Container.java:2023) at java.awt.Component.dispatchEventImpl(Component.java:4501) at java.awt.Container.dispatchEventImpl(Container.java:2081) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895) at java.awt.Container.dispatchEventImpl(Container.java:2067) at java.awt.Window.dispatchEventImpl(Window.java:2458) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) java.lang.NullPointerException at NewJFrame.atualizaCampo(NewJFrame.java:41) at NewJFrame.<init>(NewJFrame.java:23) at menu.jCheckBoxMenuItem3ActionPerformed(menu.java:194) at menu.access$300(menu.java:16) at menu$4.actionPerformed(menu.java:104) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:291) at javax.swing.AbstractButton.doClick(AbstractButton.java:357) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1225) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1266) at java.awt.Component.processMouseEvent(Component.java:6134) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5899) at java.awt.Container.processEvent(Container.java:2023) at java.awt.Component.dispatchEventImpl(Component.java:4501) at java.awt.Container.dispatchEventImpl(Container.java:2081) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895) at java.awt.Container.dispatchEventImpl(Container.java:2067) at java.awt.Window.dispatchEventImpl(Window.java:2458) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) CONSTRUÍDO COM SUCESSO (tempo total: 5 segundos)

Jader_Bittencourt

Pelo jeito tu continua com um problema na query:

corresponds to your MySQL server version for the right syntax to use near ''' where id = 1'  at line 1

Tens como postar como ficou a String referente? Tecnicamente deveria ficar algo como:

String query = "Select * from " +pontos.nivel+" where id = " +pontos.id;
sf.marcius

leia a msg de erro ao menos:

antes do “where”, vc inseriu duas aspas simples. talvês vc esteja achando que é uma aspa dupla, mas na real tem duas aspas simples ali…
manda do código completo da sua classe BD

Suellen_Susu

classe BD:

import java.sql.*;
public class BD
{
public static Connection connection = null;
public static Statement statement = null;
public static ResultSet resultSet = null;
public static final String DRIVER = "org.gjt.mm.mysql.Driver" ;
public static final String URL = "jdbc:mysql://localhost/quiz";

/**
* método que faz conexão com o banco de dados
* retorna true se houver sucesso, ou false em caso negativo
*/

public static boolean getConnection()
{
    try
    {
        Class.forName(DRIVER) ;
        connection = DriverManager.getConnection(URL, "root", "123");
        statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
        return true;
}
catch(ClassNotFoundException erro)
{
erro.printStackTrace();
return false;
}
catch(SQLException erro)
{
erro.printStackTrace();
return false;
}
} 

 /**
* Fecha ResultSet, Statement e Connection 
*/

public static void close()
{
closeResultSet();
closeStatement();
closeConnection();
} 

private static void closeConnection()
{
try
{
connection.close();
System.out.println("Desconectou");
}
catch(SQLException erro)
{
erro.printStackTrace();
}
} 

private static void closeStatement()
{
try
{
statement.close();
}
catch(Exception e)
{
e.printStackTrace();
}
} 

private static void closeResultSet()
{
try
{
resultSet.close();
}
catch(Exception e)
{
e.printStackTrace();
}
} 

/**
* Carrega o resultSet com o resultado do script SQL
*/
public static void setResultSet(String sql)
{
try
{
resultSet = statement.executeQuery(sql);
}
catch(SQLException erro)
{
erro.printStackTrace();
}
} 

/**
* Executa um script SQL de atualização
* retorna um valor inteiro contendo a quantidade de linhas afetadas
*/
public static int runSQL(String sql)
{
int quant = 0;
try
{
quant = statement.executeUpdate(sql);
}
catch(SQLException erro)
{
erro.printStackTrace();
}
return quant;
}
}
sf.marcius

cria esse metodo na sua classe BD

public static PreparedStatement createPreparedStatement(String sql) {
        try {
            return connection.prepareStatement(sql);
        } catch (SQLException ex) {
            ex.printStackTrace();
            return null;
        }
    }
sf.marcius

depois modifique essa parte:

@SuppressWarnings("unchecked")
    public void atualizaCampo(){
    if(BD.getConnection())
               {
               
                try
                {                  
                     PreparedStatement stm = BD.createPreparedStatement("SELECT * FROM " + pontos.nivel + " WHERE ID = ?");
                     stm.setInt(1, pontos.id);
                     ResultSet rs = stm.executeQuery();
                     while (rs.next())
                     {
                         pergunta=(rs.getString("pergunta"));
                         alt1=(rs.getString("alt1"));
                         alt2=(rs.getString("alt2"));
                         alt3=(rs.getString("alt3"));
                         alt4=(rs.getString("alt4"));
                         resposta=(rs.getString("resposta"));
                         cont=(rs.getInt("id"));
                     }
                     if (cont!=pontos.id){                      
                         JOptionPane.showMessageDialog(null, "Fim de Jogo");
                         this.dispose();
                         new recordes().setVisible(true);                        
                     }
                }
                catch(java.lang.Exception ex)
                {
                    ex.printStackTrace();
                }
               }
}
N

Se você quiser colocar o nível como número, você pode fazer algo assim:

"SELECT * FROM " + (pontos.nivel==1?"Facil":(pontos.nivel==2?"Medio":(pontos.nivel==3?"Dificil":"Facil"))) + " WHERE ID = ?"

ou

String[] niveis = {"Facil","Medio","Dificil"}; "SELECT * FROM " + niveis[pontos.nivel-1] + " WHERE ID = ?"

Suellen_Susu

mas dessa ultima resposta, a primeira opção, como colocaria numeração em cada tabela no programa? em que classe?

Criado 1 de abril de 2010
Ultima resposta 2 de abr. de 2010
Respostas 30
Participantes 4