Erro Básico

10 respostas
N

Estou com muita dificuldade para fazer algo basico. Pegar do banco de dados uma simples consulta

quero consultar minha tabela produto. na coluna nm_produto, ou seja, procurar produto pelo nome

nesta primeira parte é a tela, simplismente pega o nome digitado na tela e depois retorna seu valor.

private void jButtonBuscarActionPerformed(java.awt.event.ActionEvent evt) {                                              

        try {
            Produto pro = new Produto();
            ProdutoService ps = new ProdutoService();
            String a = jTextFieldNome.getText();   // pega o nome digitado na textfield e coloca na variavel.
            pro = ps.buscaProdutoNome(a); // envia a variavel como parametro e retorna o produto
    jTextFieldValor.setText(pro.getPrecovenda() + ""); // pega o produto retornado e seta o nome dele numa textfield
            System.out.println("mostrando conteudo textfield nome" + jTextFieldNome.getText());

nesta segunda parte vou mostrar como ele faz a consulta

public Produto buscaProdutoNome(String nome) throws Exception {

        Connection con = SQLUtil.getConnection();
        
        PreparedStatement ps = con.prepareStatement(SQLConstants.PRODUTO_SELECT_NOME);
        ps.setString(1, nome); 

        ResultSet rs = ps.executeQuery();
		rs.next();
		Produto p1 = new Produto();
 
                p1.setCd_produto(rs.getInt(2));
		p1.setNome(nome);
		p1.setPrecovenda(rs.getDouble(3));
      
		rs.close();
		ps.close();

		return p1;

e por ultimo a minha SQLConstant

static final String PRODUTO_SELECT_NOME =
    "SELECT * FROM Produto WHERE nm_produto = \"?\"";

Isto funciona, mas somente quando o nome do produto é um numero, ou seja, um inteiro. se o nome dele for um literal ele nao funciona.

Agradeço sugestoes

10 Respostas

MaikoID

Desculpa não poder testar, mas não é em aspas simples que se coloca os literais? tipo

String consulta = "SELECT * FROM tabela WHERE nm_produto = '" + produto + "'";

Abraço.

wbdsjunior

niksop:
Estou com muita dificuldade para fazer algo basico. Pegar do banco de dados uma simples consulta

quero consultar minha tabela produto. na coluna nm_produto, ou seja, procurar produto pelo nome

nesta primeira parte é a tela, simplismente pega o nome digitado na tela e depois retorna seu valor.

private void jButtonBuscarActionPerformed(java.awt.event.ActionEvent evt) {                                              

        try {
            Produto pro = new Produto();
            ProdutoService ps = new ProdutoService();
            String a = jTextFieldNome.getText();   // pega o nome digitado na textfield e coloca na variavel.
            pro = ps.buscaProdutoNome(a); // envia a variavel como parametro e retorna o produto
    jTextFieldValor.setText(pro.getPrecovenda() + ""); // pega o produto retornado e seta o nome dele numa textfield
            System.out.println("mostrando conteudo textfield nome" + jTextFieldNome.getText());

nesta segunda parte vou mostrar como ele faz a consulta

public Produto buscaProdutoNome(String nome) throws Exception {

        Connection con = SQLUtil.getConnection();
        
        PreparedStatement ps = con.prepareStatement(SQLConstants.PRODUTO_SELECT_NOME);
        ps.setString(1, nome); 

        ResultSet rs = ps.executeQuery();
		rs.next();
		Produto p1 = new Produto();
 
                p1.setCd_produto(rs.getInt(2));
		p1.setNome(nome);
		p1.setPrecovenda(rs.getDouble(3));
      
		rs.close();
		ps.close();

		return p1;

e por ultimo a minha SQLConstant

static final String PRODUTO_SELECT_NOME =
    "SELECT * FROM Produto WHERE nm_produto = \"?\"";

Isto funciona, mas somente quando o nome do produto é um numero, ou seja, um inteiro. se o nome dele for um literal ele nao funciona.

Agradeço sugestoes


você não precisa colocar aspas.

static final String PRODUTO_SELECT_NOME = "SELECT * FROM Produto WHERE nm_produto = ?";

abraço.

aleques

"SELECT * FROM Produto WHERE nm_produto = ?"
c pãns

robinsonbsilva

jovem na hora de setar o PreparedStatement testa assim…

StringBuffer sql = new StringBuffer("");
sql.append("SELECT * FROM Produto WHERE nm_produto = ? ");
try {
  stmt = ConnectionPool.getConnection(getRequest()).prepareStatement(sql.toString());
  stmt.setObject(1, nm);
  rs = stmt.executeQuery();
  .........

:idea:

N

Eu estava fazendo sem as aspas, porem nao estava funcionando e coloquei aspas la pensando que poderia ser este o problema. a verdade é que com ou sem aspas, ele continua com o mesmo problema, busca apenas numeros, nomes nao retorna

T

nm_produto é o nome do produto ou o número do produto? Dê uma olhada na definição dessa coluna na tabela.

N

nm_produto é a coluna da tabela Produto.

esta coluna é um varchar

se tem incluido um numero, eu consigo retornar. se é um literal, ja nao funciona.

aleques

tenta assim soh

"SELECT * FROM Produto WHERE nm_produto = 'testeeee' "

aih c nem faz o set blabla 1, nome

c num der isso, posta a exceção q tah gerando aew…

aaaa e coloca a paradinha lah dentro de um if (rs.Next()) pra num dar null pointer lah tb

veh aew

public Produto buscaProdutoNome(String nome) throws Exception {  

		Connection con = SQLUtil.getConnection();  

		PreparedStatement ps = con.prepareStatement("SELECT * FROM Produto WHERE nm_produto = 'tum'");
		//ps.setString(1, nome);

		ResultSet rs = ps.executeQuery();  
		if (rs.next()) { // assumindo q esse nm_produto eh unike key
			
			Produto p1 = new Produto();  
	
			p1.setNome(nome);
			p1.setCd_produto(rs.getInt(2));  
			p1.setPrecovenda(rs.getDouble(3));  
			
		} else {
			System.out.println("num tem ninguem com esse nome");
		}
		rs.close();  
		ps.close();  

	}
N

Sim, ja coloquei aspas simples e tambem nao funciona. nao da erro nenhum.

aleques

last chance… nem testei aqui… veh aih… c num aparecer NADA (nem mensagem de erro)… nem sei vei

public Produto buscaProdutoNome(String nome) throws Exception{  

		Produto p1 = null;
		Connection con = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		
		try {
			
			con = SQLUtil.getConnection();  
			ps = con.prepareStatement("SELECT * FROM Produto WHERE nm_produto = 'tum'");
			//ps.setString(1, nome);
	
			rs = ps.executeQuery();  
			if (rs.next()) { // assumindo q esse nm_produto eh unike key
				
				p1 = new Produto();  
		
				p1.setNome(nome);
				p1.setCd_produto(rs.getInt(2));  
				p1.setPrecovenda(rs.getDouble(3));  
				
				javax.swing.JOptionPane.showMessageDialog(null, "BLZA! \nPreco Pre-Venda: " + p1.getPrecovenda());
				
			} else {
				javax.swing.JOptionPane.showMessageDialog(null, "num tem ninguem com esse nome");
			}
		} catch (Exception e) {
			javax.swing.JOptionPane.showMessageDialog(null, "SENHORR \n" + e.getMessage());
		} finally {
			if (ps != null) ps.close();
			if (rs != null) rs.close();  
			if (con != null) con.close();

			return p1;
		} 
	}
Criado 7 de maio de 2009
Ultima resposta 7 de mai. de 2009
Respostas 10
Participantes 6