Como obter resultado de uma string que está dentro de um if, em outra classe?

public void gerarIdEstudante(String curso) {
Connection con = getConnection();
PreparedStatement pst = null;
ResultSet rs = null;
String sql = “select auto_increment from information_schema.tables where table_name = 'tbl_estudante’and table_schema = ‘ispmDataBase’”;
try {
pst = con.prepareStatement(sql);
while (rs.next()) {
int proximoId;
proximoId = rs.getInt(1);
System.out.println(“Proximo: " + proximoId);
//Curso/Ano/Mes/ID
//INF-216(id)
//Pega Data Atual ano-mes-dia
LocalDateTime agora = LocalDateTime.now();
DateTimeFormatter formatterData = DateTimeFormatter.ofPattern(“yyyy/MM/dd”);
String dataFormatada = formatterData.format(agora);
//Formatacao da data
char ano = dataFormatada.charAt(2);//Primeiro numero do ano
char ano1 = dataFormatada.charAt(3);//Segundo numero do ano
char mes1 = dataFormatada.charAt(5);//Mes
char mes = dataFormatada.charAt(6);//Mes
System.out.println(dataFormatada);
//Curso
//Informatica/Hotelaria/Biologia
char curso1 = curso.charAt(0);
//char curso2 = curso.charAt(1);
//char curso3 = curso.charAt(2);
//Compilacao de Tudo
//Colocando em letras maiusculas
String idNovo = (”" + curso1 + ano + ano1 + mes1 + mes + proximoId).toUpperCase();
//Output
System.out.println(idNovo);

        }
    } catch (SQLException e) {

    }

}

Eu quero retornar esse idNovo dentro de outra classe, por estar dentro de um while, ou if, não resulta ! Ajuda por favor!

Mude o retorno do método para String e use return idNovo;

Olá, muito obrigado, até que já fiz isso, mas ele não está dar certo, porque está pedir mais outro retorno fora desse while ou if ! Sendo assim, retorna um null

Sim, você sempre tem que retornar algo.
Se não conseguir gerar o ID qual é o comportamento desejado? Dar um erro? Retornar null?

1 curtida

Verdade, estou meio sem orientação para isso.

Bem, a ideia dessa classe, é gerar um ID de estudante, que pega, ano(21), mes(04), essas coisas estão funcionando certo, mas agora, eu coloquei essa busca no banco que pega o proximo numero de autoincrement para concatenar com essas strings. Mas como não estou a conseguir o valor pego dentro desse result set seja por if ou while, tentei fazer desse jeito.

A ideia, é só pegar o valor de um result set que está dentro de um if, ou while, e concatenar com string que está fora desse while ou if, não sei se é possivel.

String foo = "bar";
while(condicao) {
    //Codigo
    foo += "???";
}
return foo;

Desculpe ser muito chato amigo, instanciando em outra classe, ele retorna sempre nullExeption.
O codigo com seu contributo esta assim:

public String gerarIdEstudante(String curso) {
Connection con = getConnection();
PreparedStatement pst = null;
ResultSet rs = null;
String sql = “select auto_increment from information_schema.tables where table_name = 'tbl_estudante’and table_schema = ‘ispmDataBase’”;
String idNovo = “”;
try {
pst = con.prepareStatement(sql);
while (rs.next()) {
int proximoId = rs.getInt(1);
System.out.println(“Proximo: " + proximoId);
//Curso/Ano/Mes/ID
//INF-216(id)
//Pega Data Atual ano-mes-dia
LocalDateTime agora = LocalDateTime.now();
DateTimeFormatter formatterData = DateTimeFormatter.ofPattern(“yyyy/MM/dd”);
String dataFormatada = formatterData.format(agora);
//Formatacao da data
char ano = dataFormatada.charAt(2);//Primeiro numero do ano
char ano1 = dataFormatada.charAt(3);//Segundo numero do ano
char mes1 = dataFormatada.charAt(5);//Mes
char mes = dataFormatada.charAt(6);//Mes
System.out.println(dataFormatada);
//Curso
//Informatica/Hotelaria/Biologia
char curso1 = curso.charAt(0);
//Colocando em letras maiusculas
idNovo = (”" + curso1 + ano + ano1 + mes1 + mes + proximoId).toUpperCase();
//Output
System.out.println(idNovo);

        }
    } catch (SQLException e) {
    }
    return idNovo;
}

Me desculpe a bagunça por favor.

Null
Você não está executando sua query nem atribuindo o ResultSet nessa variável.

Infelizmente está gerando sempre null, muito obrigado pela ajuda, vou tentar rever, porque o metodo retorna nulo

Retornando null ou jogando NullPointerException?

Está jogando um NullPointerException, amigo.

Você corrigiu o problema que eu falei?

rs = pst.executeQuery();