executeUpdate serve para instruções do tipo insert, update e delete. Não é para selects.
Tenta usar o executeQuery:
publicintgetNumeroDeLinhas(){
Statementst=null;ResultSetrs=null;Conexaoconn=null;try{
conn=Conexao.getConexao();Stringsql="SELECT COUNT(data) FROM Impressao";st=conn.createStatement();rs=st.executeQuery(sql);if(!rs.next())return0;returnrs.getInt(1);}catch(SQLExceptione){thrownewError(e);}finally{
if(st!=null)st.close();if(rs!=null)rs.close();if(conn!=null)conn.close();}
}
Ah, e feche as conexões, Statements e ResultSets no finally. Nunca dentro do try.
Antes de usar o ResultSet tem que chamar o método next, para ir para o primeiro registro. Cada vez que você chama next ele vai para o próximo registro, mas neste caso o seu SQL só traz um registro.
crpablo
Eudes:
E o seguinte…
preciso obter o penultimo registro da tabela, já tentei várias coisas como:
publicintgetNumeroDeLinhas(){
try{
conn=Conexao.getConexao();Stringsql="SELECT COUNT(data) FROM Impressao";Statementst=conn.createStatement();intlinhas=st.executeUpdate(sql); conn.close();returnlinhas;}catch(Exceptione){
e.printStackTrace();}
return9999;}
mas não esta retornado o número de linhas para poder usar em um array com o resultado do select de outro método.
se alguém puder me ajudar nisso eu agradeço
Obs: Não me deêm o peixe, me ensinem a pescar!!!
Isso ae… o negócio é pescar no rio cubatão… heheh
abraço
Eudes
Victor valeu pelo help!! Funcionou
Sou iniciante em Java e por enquanto tenho só o curso técnico, mas o Java me fascina e me espanta cada vez mais com sua amplitude.
Tenho a certeza de que realmente estou no caminho certo… e é isso que eu quero fazer. :twisted:
Valeu mesmo
javolatra
Essa query no meu MySql Query Browser não rola, da um erro pq?
Erro: FUNCTION mega.count does not exist
Marck
victorwss:
executeUpdate serve para instruções do tipo insert, update e delete. Não é para selects.
Tenta usar o executeQuery:
publicintgetNumeroDeLinhas(){
Statementst=null;ResultSetrs=null;Conexaoconn=null;try{
conn=Conexao.getConexao();Stringsql="SELECT COUNT(data) FROM Impressao";st=conn.createStatement();rs=st.executeQuery(sql);if(!rs.next())return0;returnrs.getInt(1);}catch(SQLExceptione){thrownewError(e);}finally{
if(st!=null)st.close();if(rs!=null)rs.close();if(conn!=null)conn.close();}
}
Ah, e feche as conexões, Statements e ResultSets no finally. Nunca dentro do try.
Por favor, pode me dizer pq quando dento fechar dentro do bloco finally o compilador diz que tenho que usar um bloco try?
Agradeço.
Essa query no meu MySql Query Browser não rola, da um erro pq?
Erro: FUNCTION mega.count does not exist
Pelo que testei aqui, é pq tem um espaço em branco entre count e o argumento: count (data).
Eudes
tinha acontecido o mesmo aqui, mas coloquei throws SQLException logo após o nome do método…
public int getNumeroDeLinhas() throws SQLException {
try {
conn = Conexao.getConexao();
String sql = "SELECT COUNT(data) FROM Impressao";
st = conn.createStatement();
rs = st.executeQuery(sql);
if (!rs.next()) return 0;
return rs.getInt(1);
} catch (SQLException e) {
throw new Error(e);
}finally{
if(conn != null) conn.close();
if(st != null) conn.close();
if(rs != null) rs.close();
}
}
e ai funcionou
Marck
Eudes:
tinha acontecido o mesmo aqui, mas coloquei throws SQLException logo após o nome do método…
public int getNumeroDeLinhas() throws SQLException {
try {
conn = Conexao.getConexao();
String sql = "SELECT COUNT(data) FROM Impressao";
st = conn.createStatement();
rs = st.executeQuery(sql);
if (!rs.next()) return 0;
return rs.getInt(1);
} catch (SQLException e) {
throw new Error(e);
}finally{
if(conn != null) conn.close();
if(st != null) conn.close();
if(rs != null) rs.close();
}
}
e ai funcionou :D
Acho que entendi. Com o throws ele informa que pode lancar uma excecao SQLException…