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

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();
}

}

}
}

[quote=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.

[code]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();
}
}
}
}[/code]
[/quote]

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

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.

[quote=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.[/quote]

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?

Não funcionou.

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

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.