Tenho o seguinte problema: estou fazendo um joguinho em java, em que a pessoa vai cadastrar as palavras no banco, e o jogo terá de sortear uma, cada vez que clicar num botão. Então, me aconselharam jogar essa lista de palavras do banco num array, e a partir dele realizar esse sorteio com o Math.random(). Só que a questão é que sei pouquissima coisa sobre arrays, e é a primeira vez que mexo com isso em java. Sendo assim, alguém poderia me mosrar ou dar-me uma dica de como eu poderia estar jogando esse resultset num array?
e a questão é com o ResultSet sim.... pq vc acha q seria com o Collection?
Suellen_Susu
Obs: minha classe de conexão com o banco tem o seguinte código...
importjava.sql.*;/** * * @author Suellen */publicclassBD{publicstaticConnectionconnection=null;publicstaticStatementstatement=null;publicstaticResultSetresultSet=null;publicstaticfinalStringDRIVER="org.gjt.mm.mysql.Driver";publicstaticfinalStringURL="jdbc:mysql://localhost/bdmarisa";/*O método faz a conexão com o banco de dados MySQL, * e retorna true se houver conectado, ou false em caso negativo. */publicstaticbooleangetConnection(){try{Class.forName(DRIVER);connection=DriverManager.getConnection(URL,"root","123");statement=connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);returntrue;}catch(ClassNotFoundExceptionerro){erro.printStackTrace();returnfalse;}catch(SQLExceptionerro){erro.printStackTrace();returnfalse;}}publicstaticvoidclose()//método que fecha os demais métodos.{closeResultSet();closeStatement();closeConnection();}privatestaticvoidcloseConnection(){try{connection.close();System.out.println("Desconectou");}catch(SQLExceptionerro){erro.printStackTrace();}}privatestaticvoidcloseStatement(){try{statement.close();}catch(Exceptione){e.printStackTrace();}}privatestaticvoidcloseResultSet(){try{resultSet.close();}catch(Exceptione){e.printStackTrace();}}/* * Carrega o resultSet com o resultado do script SQL. */publicstaticvoidsetResultSet(Stringsql){try{resultSet=statement.executeQuery(sql);}catch(SQLExceptionerro){erro.printStackTrace();}}/* Executa um script SQL de atualização * e retorna um valor inteiro, * contendo a quantidade de linhas afetadas. */publicstaticintrunSQL(Stringsql){intquant=0;try{quant=statement.executeUpdate(sql);}catch(SQLExceptionerro){erro.printStackTrace();}returnquant;}}
igor_ks
Talvez faltou import, mas de qualquer forma, este codigo está incompleto, fiz apenas para vc ver como popular uma lista, a partir de um resultado da query.
Antes disso, é preciso criar a conexão, escrever teu select do banco, popular o resultset. Isso tem no link que passei no post anterior
Suellen_Susu
Import ñ é, pois ja inseri todos…
O erro entao seria referente ao q vc disse depois entao, q tem q criar a outra classe, preencher o array com o resultado do banco e tal… mas eu to vendo o q vc me mandou, e msmo assim ñ to conseguindo fazer…
mas obrigada pela ajuda, msmo assim…
igor_ks
Hummmm, mas já tem a classe de Conexão prontinha, com o Statement e ResultSet, ai fica facinho
BDbanco=newBD();banco.conn=banco.getConnection; //o certo era este getConnection já retornar um Connectionbanco.setResultSet("select pal from palavra");Listpalavras=newArrayList(); while(banco.resultSet.next()){
palavras.add(rs.getString("pal"));}
Nisso vc tera uma lista com todas as palavras do banco populadas
Suellen_Susu
Então coloquei o código novo, mas ele da erro na 2ª linha, onde tem esse banco.conn (q tmb ñ entendi a função desse ".conn") sendo q ele grifa em vermelho o .conn e o .getConnection
E tmb deu erro na 6ª linha, em q é grifado em vermelho rs.getString (pra mim, o rs é o resultSet, certo? mas onde esta a declaração de rs?) ele me da duas opções no netbeans pra arrumar o erro, uma para criar a classe rs, e a outra para criar o campo rs. Qual devo usar?)
BDbanco=newBD(); banco.conn=banco.getConnection; //o certo era este getConnection já retornar um Connection BD.setResultSet("SELECT pal FROM palavra"); Listpalavraslist=newArrayList(); while(BD.resultSet.next()){palavraslist.add(rs.getString("pal")); }
sgaothaich
O método getConnection deve retornar uma Connection não um Boolean, quanto ao teu ResultSet, ele vem da classe BD, então tente:
BD.resultSet.getString("pal");
Suellen_Susu
O erro permanece, msmo realizando essa modificação.
sgaothaich
qual é o erro?
igor_ks
Opa, desculpe, é que estou codificando aqui direto no forum
o conn era pra ser o connection da classe BD, mas reparei agora que as variaveis sao estaticas, logo nao precisa instanciar a classe BD e acessar diretamente
Sim, a 6ª linha era pra ser resultSet
O certo era vc mesmo identificar os problemas e corrigir, pois a intencao do forum é ajudar a chegar no resultado e não dar o resultado direto, pois bem
if(BD.getConnection()){
BD.setResultSet("Select pal from pergunta");Listpalavras=newArrayList(); try{
while(BD.resultSet.next()){palavras.add(BD.resultSet.getString("pal")); }
}catch(SQLExceptione){
e.printStackTrace();}
}
agora só fazer o random ;D
Suellen_Susu
desculpa, ñ deu erro ñ, eu q digitei errado aki…
deu certinho sim…
Suellen_Susu
igor_ks:
Opa, desculpe, é que estou codificando aqui direto no forum
o conn era pra ser o connection da classe BD, mas reparei agora que as variaveis sao estaticas, logo nao precisa instanciar a classe BD e acessar diretamente
Sim, a 6ª linha era pra ser resultSet
O certo era vc mesmo identificar os problemas e corrigir, pois a intencao do forum é ajudar a chegar no resultado e não dar o resultado direto, pois bem
if(BD.getConnection()){
BD.setResultSet("Select pal from pergunta");Listpalavras=newArrayList(); try{
while(BD.resultSet.next()){palavras.add(BD.resultSet.getString("pal")); }
}catch(SQLExceptione){
e.printStackTrace();}}
agora só fazer o random ;D
Eu sei q a função do forum é a q vc disse acima, e desculpa se te atrapalhei… é q realmente ñ entendo nada dessa parte em java, e como ja disse antes, é a primeira vez q estou trabalhando com isso…
Mas, de coração, mto obrigada pela ajuda, o resto, como vc msmo disse, corro atras…
sgaothaich
Suellen, dê uma olhada na apostila FJ-21 da Caelum na parte sobre JDBC pra vc entender direitinho como funciona
Suellen_Susu
vou ver sim, obrigada! ;]
igor_ks
nao digo isso pq me atrapalha nao, apenas pra que vc aprenda mesmo
ajudo o forum, justamente pelo meu aprendizado e tb claro por ajudar os outros…