Banco de Dados

Pessoal estou tentando fazer o botao proximo em meu simples programa e so sai o primeiro dado … nao consigo fazer aparecer os mais dados pq?

[code]private void jButtonProxActionPerformed(java.awt.event.ActionEvent evt) {
ResultSet rs = null;
Connection Conexao;
try {
Conexao = DriverManager.getConnection(URL, USE, SENHA);
Statement InstrucaoSelectSQL = Conexao.createStatement();
rs = InstrucaoSelectSQL.executeQuery(“SELECT * from Notebook”);
rs.next();
System.out.println(rs.getString(“Marca”).trim());
} catch (SQLException ex) {
Logger.getLogger(ProjetoJava.class.getName()).log(Level.SEVERE, null, ex);
}

}[/code]

Está faltando um loop aí na hora do imprimir o valor.

se eu coloco o loop coloca sempre o mesmo valor :smiley:

Coloca seu código que fez utilizando um loop. Para vermos onde está o erro.

Galera to achando que to errando no codigo no seguinte … toda vez que clico no botao ele cria uma conexao … tem como eu fazer isso criando apenas uma conexao??

Sim, uma maneira simples de criar isso é criar uma classe denominada ConnectionFactory. Só dar uma pesquisada que você ira encontrar fácil na internet.

package br.com.rastreador.factory;
 
import java.sql.Connection;
import java.sql.DriverManager;
 
public class ConnectionFactory {
 
   //Nome do usuário do mysql
   private static final String USERNAME = "root";
 
   //Senha do mysql
   private static final String PASSWORD = "root";
 
   //Dados de caminho, porta e nome da base de dados que irá ser feita a conexão
   private static final String DATABASE_URL = "jdbc:mysql://localhost:3306/agenda";
   /**
   * Cria uma conexão com o banco de dados MySQL utilizando o nome de usuário e senha fornecidos
   * @param username
   * @param senha
   * @return uma conexão com o banco de dados
   * @throws Exception
   */
   public static Connection createConnectionToMySQL() throws Exception{
      Class.forName("com.mysql.jdbc.Driver"); //Faz com que a classe seja carregada pela JVM
 
      //Cria a conexão com o banco de dados
      Connection connection = DriverManager.getConnection(DATABASE_URL, USERNAME, PASSWORD);
 
      return connection;
   }
   public static void main(String[] args) throws Exception{
 
      //Recupera uma conexão com o banco de dados
      Connection con = createConnectionToMySQL();
 
      //Testa se a conexão é nula
      if(con != null){
         System.out.println("Conexão obtida com sucesso!" + con);
         con.close();
      }
 
   }
}

Um exemplo dessa classe, retirada do blog do Bruno Rota.

http://www.brunorota.com.br/blog/tutorial-criar-crud-em-java-com-jdbc-parte-1/

Já é uma grande melhora na organização do código.

bem galera o que eu estou querendo é mostrar os dados que estao em um banco de dados mostrando um por um … ao clicar no botao proximo mostrar o proximo dado … mas nao consigo :smiley:

[code] ResultSet rs = null;
Connection Conexao;
try {
Conexao = DriverManager.getConnection(URL, USE, SENHA);
Statement InstrucaoSelectSQL = Conexao.createStatement();
rs = InstrucaoSelectSQL.executeQuery(“SELECT * from Notebook”);
while(rs.next())
System.out.println(rs.getString(“Marca”).trim());
} catch (SQLException ex) {
Logger.getLogger(ProjetoJava.class.getName()).log(Level.SEVERE, null, ex);
}

}[/code]

e com o loop ele pega todos e mostra enqnto tiver … mas nao quero isso eu quero que mostre 1 por 1 … me ajude ai pessoal!

Você pode fazer uma pesquisa no banco e passar todos os dados para uma coleção e no botão próximo e anterior você navega na coleção.

não tem um possibilidade de eu fazer a pesquisa sem a necessidade de lista? eu nao quero eu ja quero pegar do banco direto … nao tem como eu fazerr isso?

Talvez isso ajude:
http://docs.oracle.com/javadb/10.4.1.3/devguide/cdevconcepts22641.html
http://www.roseindia.net/tutorial/java/jdbc/jdbcresultset/jdbcresultsetscrollsensitivetype.html

Pessoal me ajude aqui no seguinte SQL, estou tentando fazer uma consulta no banco de dados atraves do seguinte SQL onde o usuario seleciona o campo do banco que ele quer consultar e o texto;

"SELECT * FROM Notebook WHERE '"+Variavel1+"', like '"+variavel2+"'");

tem algum erro nessa instrução sql?
se sim qual o erro? podem me ajudar pois nao consigo fazer :smiley:

Bom vamos lá guri…

Suponhamos que você queira fazer algo com seu retorno da query que é normal.
Na tua query você não diz qual campo quer pegar, esse SELECT * FROM tabela_x geralmente é feito direto no BD (isso se você sabe quantos registros sua tabela contém, pois dependendo pode dar uma travada legal no seu sistema ou demorar mais que o necessário).

Vamos supor que você queria pegar nome, idade, endereco da tabela_x onde nome tem que ser igual a “parametroNome”
Ex:

//Variáveis de conexão e bla bla bla...
 
String query = "SELECT nome, idade, endereco FROM tabela_x WHERE nome like  '" + parametroNome + "' ";

rs = st.executeQuery(query);

while(rs.next()){

//Então aqui você carrega os valores do seu select e os atrela a uma variável que você possa utiliza-la.

String nome = rs.getString("nome");
short idade = rs.getShort("idade");
String endereco = rs.getString("endereco");

}

Eu nunca usei uma variável como parâmetro no where tipo: Where variavel like ‘" + outraVariavel + "’, mas se você tiver várias possibilidades de busca, uma das saídas é fazer um if na query. Ai vai depender do que você está fazendo…

Mas seguindo sua ideia, tenta isso aqui…

String query = "SELECT  nome, marca, cor FROM Notebook WHERE '"+Variavel1+"', like '"+variavel2+"'");  

Floww.

Cara, mesmo vc abrindo uma conexão nova ele tem acesso a tabela q consegue e com um loop vc consegue recuperar os valores, porém a melhor forma é utilizar uma fabrica mesmo como disse o douglas_arantes!!

=]

coloca um loop while ai q rola

abraços