Porque esse getText(); não funciona ? =s

6 respostas
gabrielgirodo

Pessoal, no código abaixo, na minha query o comando getText(); não está funcionando como parâmetro. Se eu passar um dado que existe no banco ele funciona :?

Por favor, ajudem - me.

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.*;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.swing.*;

public class chatterbot extends JFrame implements ActionListener

{

private static Connection connection;
JLabel escreva;

JButton ok;

static JTextField linha;

static TextArea texto;
public chatterbot()

{

JFrame frame = new JFrame(“Chatter Teste”);

frame.setSize(500,300);

frame.setLocation(400,200);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
escreva = new JLabel(Escreva aqui:);

escreva.setLocation(20,220);

escreva.setSize(100,30);
linha = new JTextField ("");

linha.setLocation(100,225);

linha.setSize(300,20);
texto = new TextArea ("",5,40,1);

texto.setLocation(10,10);

texto.setSize(450,180);

<a href="//texto.disable">//texto.disable</a>();
ok = new JButton(“ok”);

ok.setLocation(420,210);

ok.setSize(50,50);

ok.addActionListener((ActionListener) this);
frame.getContentPane().setLayout(null);

frame.getContentPane().add(escreva);

frame.getContentPane().add(linha);

frame.getContentPane().add(texto);

frame.getContentPane().add(ok);

frame.show();
}

public static void FazConexao()
{

System.out.println(“Vai fazer a conexão”);

// O URL que especifica o banco de dados chatbot ao qual

// esse programa se conecta, utilizando JDBC para conectar a um

// banco de dados Microsoft ODBC.

// Carrega o driver para permitir conexão ao banco de dados

try

{

Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);

connection = DriverManager.getConnection(jdbc:odbc:chatterbot, “”,

"");

System.out.println(conexão com sucesso);

}

catch (ClassNotFoundException cnfex)

{

System.err.println(FALHA NA CONEXÃO DO BANCO DE DADOS);

cnfex.printStackTrace();

System.exit(1);

}

catch (SQLException sqlex)

{

System.err.println(BANCO DE DADOS NÃO DISPONIVEL);

sqlex.printStackTrace();

}

}
public static void main(String args[])

{

FazConexao();

new chatterbot();

}
public void actionPerformed(ActionEvent botoes)

{

Connection con = connection;

if(botoes.getSource()==ok)
{

try
{

Statement st = con.createStatement();
ResultSet res = st.executeQuery("SELECT * FROM falas WHERE pergunta = " +linha.getText());

if (res.next())

texto.setText(res.getString(“resposta”));

}

catch (SQLException sqlex)

{

System.out.println("erro sql " + sqlex);

sqlex.printStackTrace();

}

}

}
}

6 Respostas

JonathanSSantos
gabrielgirodo:
Pessoal, no código abaixo, na minha query o comando getText(); não está funcionando como parâmetro. Se eu passar um dado que existe no banco ele funciona :?

Por favor, ajudem - me.

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.*; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 

import javax.swing.*; 

public class chatterbot extends JFrame implements ActionListener { 
   private static Connection connection; 
   JLabel escreva; 
   JButton ok; 
   static JTextField linha; 
   static TextArea texto; 

   public chatterbot() { 
      JFrame frame = new JFrame("Chatter Teste"); 
      frame.setSize(500,300); 
      frame.setLocation(400,200); 
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

      escreva = new JLabel("Escreva aqui:"); 
      escreva.setLocation(20,220); 
      escreva.setSize(100,30); 

      linha = new JTextField (""); 
      linha.setLocation(100,225); 
      linha.setSize(300,20); 

      texto = new TextArea ("",5,40,1); 
      texto.setLocation(10,10); 
      texto.setSize(450,180); 
      //texto.disable(); 

      ok = new JButton("ok"); 
      ok.setLocation(420,210); 
      ok.setSize(50,50); 
      ok.addActionListener((ActionListener) this); 

      frame.getContentPane().setLayout(null); 
      frame.getContentPane().add(escreva); 
      frame.getContentPane().add(linha); 
      frame.getContentPane().add(texto); 
      frame.getContentPane().add(ok); 

      frame.show(); 
   } 

   public static void FazConexao() { 
      System.out.println("Vai fazer a conexão"); 

      // O URL que especifica o banco de dados chatbot ao qual 
      // esse programa se conecta, utilizando JDBC para conectar a um 
      // banco de dados Microsoft ODBC. 
      // Carrega o driver para permitir conexão ao banco de dados 
      try { 
         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
         connection = DriverManager.getConnection("jdbc:odbc:chatterbot", "", ""); 
         System.out.println("conexão com sucesso"); 
      } catch (ClassNotFoundException cnfex) { 
         System.err.println("FALHA NA CONEXÃO DO BANCO DE DADOS"); 
         cnfex.printStackTrace(); 
         System.exit(1); 
      } catch (SQLException sqlex) { 
         System.err.println("BANCO DE DADOS NÃO DISPONIVEL"); 
         sqlex.printStackTrace(); 
      } 
   } 

   public static void main(String args[]) { 
      FazConexao(); 
      new chatterbot(); 
   } 

   public void actionPerformed(ActionEvent botoes) { 
      Connection con = connection; 
      if(botoes.getSource()==ok) { 
         try { 
            Statement st = con.createStatement(); 
            ResultSet res = st.executeQuery("SELECT * FROM falas WHERE pergunta = " +linha.getText()); 
            if (res.next()) 
               texto.setText(res.getString("resposta")); 
         } catch (SQLException sqlex) { 
            System.out.println("erro sql " + sqlex); 
            sqlex.printStackTrace(); 
         } 
      } 
   } 
}
L

Poste somente a parte do codigo onde está dando erro…
Assim fica dificil de achar…
Imagine se eu tivesse um problema num código e colocasse a codificação do sistema inteiro aqui… + uma coisa… ao postar o código coloque as tags de código

Voltando ao problema… o getText nestá funcionando ou está faltando as aspas simples entre o texto retornado de “linha” para a sua query?
Insira um system.out.println depois de formulada a query para ver a query que está gerando

gabrielgirodo

Cara, não entendi nada que você quiz dizer. Escreveu tudo errado =S

Por favor, me explique novamente o que você quiz dizer.

Para informação, eu já dei print no que tem dentro do linha.getText(); e ele printa o texto certo.

JonathanSSantos

gabrielgirodo:
Cara, não entendi nada que você quiz dizer. Escreveu tudo errado =S

Por favor, me explique novamente o que você quiz dizer.

Para informação, eu já dei print no que tem dentro do linha.getText(); e ele printa o texto certo.

Que ele quis dizer é pra ti colocar ’ ’ (aspas simples aqui
Código certo:

ResultSet res = st.executeQuery(“SELECT * FROM falas WHERE pergunta = [color=red]’[/color]” +linha.getText() + “[color=red]’[/color]”);

Olha as aspas em vermelho!
Entendeu?

gabrielgirodo

Não funcionou.

EU NÃO CONSIGO FAZER O JAVA FAZER UMA PESQUISA ATRAVÉS DE UMA STRING =S

ViniGodoy

A pergunta que está no banco de dados vai ter que ser EXATAMENTE igual a digitada.

if(botoes.getSource()==ok) { try { Connection con = connection; PreparedStatement st = con.prepareStatement("SELECT * FROM falas WHERE pergunta = ?"); st.setString(1, linha.getText()); while (res.next()) { texto.append(rs.getString("resposta")).append("\n"); } } catch (SQLException sqlex) { System.out.println("erro sql " + sqlex); sqlex.printStackTrace(); } }

Se quiser fazer a pesquisa por algo só parecido, use o LIKE no seu SQL.

Criado 26 de março de 2010
Ultima resposta 16 de abr. de 2010
Respostas 6
Participantes 4