generar código para una tabla

Hola a todos muy agradecido con la página y aqui me tiene molestandolos con cosas simples: mi problema es que quiero generar mi código para mi tabla, entonces quiero que me cuente el numero de filas a la cual adicionare la inicial del nombre de la tabla. Lo único que deso es como puedo retornar ese resultado despues de contar las filas nose muy bien como es el funcionamiento de las respuestas con bd "r=st.executeQuery("SELECT COUNT(*) FROM "+ tabla);" en este caso no sé que se almacena en "r" aqui les pongo el código que hice, desde ya mucha gracias.

public Integer contar(String tabla) {
int resultado=0;
try {
Class.forName("org.gjt.mm.mysql.Driver");
conn = DriverManager.getConnection(url, login, password);
if (conn != null){
System.out.println("Conexión a base de datos "+url+" ... Ok");
st= conn.createStatement(r.TYPE_SCROLL_SENSITIVE,r.CONCUR_UPDATABLE);
r=st.executeQuery("SELECT COUNT(*) FROM "+ tabla);

conn.close();

}
}catch(SQLException ex) {
System.out.println("Hubo un problema al intentar conectarse con la base de datos "+url);
}catch(ClassNotFoundException ex) {
System.out.println(ex);
}
return resultado;
}

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

Lenguajes fuertemente tipados

La ventaja de los lenguajes fuertemente tipados es que SIEMPRE sabes de qué tipo es una variable. Muchos se quejan de esto pero cuando estás manteniendo código es muy conveniente porque por ejemplo en ese código que pusiste, donde no se ve qué cosa es r, solamente tienes que rastrear el código o usar un IDE y poner el puntero sobre la variable para que te diga de qué tipo es y puedas ir a la declaración de la misma.

En contraste con lenguajes que te permiten declarar variables así nomás y que usan el famoso "duck typing", es más difícil (en mi opinión) mantener código porque en casos como el tuyo, no sabes si están declarando r en esa línea, o si ya estaba declara antes, y si rastreas el código y te encuentras un bonito def r no te sirve de nada a menos que veas la documentación del método executeQuery de la clase... pues de lo que sea st que tampoco sabes qué es, etc.

Pero bueno, respondiendo a tu pregunta... yo diría que st es un PreparedStatement o al menos un Statement (paquete java.sql) y que r es un ResultSet (también java.sql). Y el código está medio mal porque la conexión se debe cerrar en un finally, porque si ocurre una excepción ya no se va a cerrar la conexión, lo que causa fugas de recursos (se quedan conexiones abiertas a la base de datos que nadie usa, costando memoria y file descriptors tanto en el cliente como en el RDBMS).