Como pegar valor especifico | PostgreSQL

Alguem pode me ajudar a pegar o valor 21 da coluna Numero?

Exemplo:

ID | Nome    | Numero
 1 | Adriano |   15
 2 | Alex    |   21
 3 | Billy   |   06

Faça um Select assim:

SELECT ID, Nome, Numero FROM Nome_da_Tabela WHERE Numero = 21

Mas tipo, eu queria verificar qual é o numero, pois ele altera.

Eu queria fazer isso:
Você está logado? se sim, qual é esse número.
Eu consegui fazer essa verificação de login, mas quando eu tento achar esse número não dá certo.

Da onde vem logado?

é que tipo no banco de dados, tem Id, Nome e Número, quando alguém logar (colocar Id e Nome) pelo programa, verifica qual é o Número.

Agora você superou as expectativas!

Não sei nem o que você está dizendo!

Droga, nem sei explica… HUEHEHUEUHE ;–;

Vamos lá,
No Banco de Dados:

ID | Nome  | Numero
 1 | Alex  |   23
 3 | Tohn  |   17

No Java:


Usuario logou? se sim verifique o numero

package frame;
 
import java.awt.event.KeyEvent;
import java.sql.*;
import javax.swing.JOptionPane;
import principal.Conexao;
import javax.swing.JFrame;
 
public class Login extends JFrame {
 
    Connection con = null;
    PreparedStatement pst = null;
    ResultSet rs = null;
    PreparedStatement pstadmin = null;
    ResultSet rsadmin = null;
 
    public Login() throws ClassNotFoundException {
        setVisible(true);
        setLayout(null);
        initComponents();
        setLocationRelativeTo(null);
        con = Conexao.conexao();
    }
 
    public void Logar() {
 
        String sql = "SELECT *from contas where usuario = ? and senha = ?";
        try {
            pst = con.prepareStatement(sql);
            pst.setString(1, txtUsuario.getText());
            pst.setString(2, txtSenha.getText());
            rs = pst.executeQuery();
 
            String sqladmin = "SELECT *from contas where admin = ?";
            String admin = "";
            pstadmin = con.prepareStatement(sqladmin);
            pstadmin.setString(1, admin);
            rsadmin = pstadmin.executeQuery();
 
//            System.out.println("login: " + rs.next());
//            System.out.println("admin: " + rsadmin.next());
            if (rs.next()) {
                if (rsadmin.next()) {
                    LogadoAdmin la = new LogadoAdmin();
                    la.setVisible(true);
                    dispose();
                }
                Logado l = new Logado();
                l.setVisible(true);
                dispose();
            } else {
                JOptionPane.showMessageDialog(null, "Dados inválidos, Por favor Verifique-os!");
                txtSenha.setText("");
            }
        } catch (SQLException error) {
            JOptionPane.showMessageDialog(null, error.getMessage());
        }
    }                
 
    private void btnEntrarActionPerformed(java.awt.event.ActionEvent evt) {                                          
        Logar();
    }                                                                                            
 
    public static void main(String[] args) {
        try {
            new Login();
        } catch (ClassNotFoundException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
    }
 
}

A lógica feita por você precisa guardar isso de uma forma global, no seu projeto!
Ao pesquisar o usuário se retornar registro no rs.next() for true tem registro e usuário precisa agora guardar esse usuário para pesquisas posteriores.

mas o rs.next(); está verificando o que? ele está dando respostas sem sentido.
e essa parte pstadmin.setString(1, admin) você pode me ajudar?

Reflita:

O que você deseja fazer?
O que você fez?
Explica de uma maneira que seja um criancinha de 1 ano de idade?
O que você realmente deseja fazer?

Eu quero que logo após o login, o código verifique se o número é 0 ou 1.

Não foi explicado para uma criancinha de 1 ano de idade!
Qual é a sua tabela, com os campos? Poste aqui!
Da onde ou campo vem o valor 0 e 1?

Se calma, eu to começando a aprender ainda…
Banco de dados:

CREATE TABLE contas
(
  codigo serial NOT NULL,
  usuario character varying(10),
  senha character varying(10),
  admin text,
  CONSTRAINT id PRIMARY KEY (codigo)
)

(na variável admin é colocado o número 0 e o 1 na hora que a conta é criada)

Eu estou calmo, o problema é a falta de informação, desenvolver precisa ter todas as informações e quando se tira um duvida tem que saber o que pode ou não acontecer no código.

Exemplo:

Classe para conectar no banco de dados

Classe Connection

package Classes;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
public class Connection {
    private java.sql.Connection connect = null;
    public Connection() throws ClassNotFoundException, SQLException 
    {
        open();
    }    
    public java.sql.Connection open() throws SQLException, ClassNotFoundException
    {
        if (connect == null)
        {
            Class.forName("com.mysql.jdbc.Driver");
            connect = 
                    DriverManager
                            .getConnection("jdbc:mysql://localhost/test?user=root&password=senha");
        }
        return connect;
    }    
    public void close() throws Throwable
    {
        if (connect != null) {
            connect.close();
        }
        connect = null;
    }    
    public PreparedStatement prepareStatement(String sql, boolean lastInsertId) throws SQLException, ClassNotFoundException
    {
        open();
        if (lastInsertId){
            return connect.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
        }
        return connect.prepareStatement(sql);
    }    
    public PreparedStatement prepareStatement(String sql) throws SQLException, ClassNotFoundException
    {        
        return this.prepareStatement(sql, false);
    }
}

Classe modelo Conta (igual tabela do banco de dados)

package Classes;
public class Conta {
    private Integer codigo;
    private String usuario;
    private String senha;
    private String admin;
    public Conta() {
        
    }
    public Conta(Integer codigo, String usuario, String senha, String admin) {
        this.codigo = codigo;
        this.usuario = usuario;
        this.senha = senha;
        this.admin = admin;
    }
    public Conta(String usuario, String senha, String admin) {
        this.usuario = usuario;
        this.senha = senha;
        this.admin = admin;
    }    
    public Integer getCodigo() {
        return codigo;
    }
    public void setCodigo(Integer codigo) {
        this.codigo = codigo;
    }
    public String getUsuario() {
        return usuario;
    }
    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }
    public String getSenha() {
        return senha;
    }
    public void setSenha(String senha) {
        this.senha = senha;
    }
    public String getAdmin() {
        return admin;
    }
    public void setAdmin(String admin) {
        this.admin = admin;
    }
}

Classe para operações DalConta

package Classes;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DalConta {    
    private Connection connection;
    public DalConta(Connection connection) {
        this.connection = connection;
    }    
    public Conta findByUserNameAndPassword(String usuario, String senha) throws SQLException, ClassNotFoundException
    {
        if (usuario.isEmpty() || senha.isEmpty()) {
            return null;
        }
        
        Conta conta = null;
        
        PreparedStatement st = 
                connection.prepareStatement("SELECT * FROM contas where usuario=? and senha=? limit 1");
        
        st.setString(1, usuario);
        st.setString(2, senha);
        
        ResultSet result = st.executeQuery();
        if (result.next())
        {
            conta = new Conta(
                    result.getInt("codigo"),
                    result.getString("usuario"),
                    result.getString("senha"),
                    result.getString("admin")                    
            );
        }
        
        return conta;
    }    
    public void Dispose() throws Throwable
    {
        if (connection != null){
            connection.close();
            connection = null;
        }        
    }
}

Dados da tabela

Como utilizar:

Connection conn = new  Connection();
DalConta dalConta = new DalConta(conn);
    
Conta conta1 = dalConta.findByUserNameAndPassword("usu1", "102030");
Conta conta2 = dalConta.findByUserNameAndPassword("usu2", "405060");
    
System.out.print(conta1.getAdmin());
System.out.print(conta2.getAdmin());

Saída

Agora raciocine e veja como é simples retornar uma informação da base de dados e saber o valor mediante ao padrão DAL.

mas eu definindo o user e o password pelo código não poderia criar um JFrame para criar outras contas e guarda-las em uma outra tabela (meu caso)?

Eu te dei todo o código base ( que é como resgatar a informação do banco de dados e com esse dados pode definir opções no código ) e ainda VOCÊ não conseguiu entender o que eu te passei.

Sério, realmente você não entendeu nada, porque, passar um código base como passei seria o ideal para você estudar e entender como recuperar a informação.

Agora faça a adaptação ao seu código, seguinte a lógica!

Aonde você fez:

if (rs.next()) {
	if (rsadmin.next()) {
		LogadoAdmin la = new LogadoAdmin();
		la.setVisible(true);
		dispose();
	}
	Logado l = new Logado();
	l.setVisible(true);
	dispose();
} else {
	JOptionPane.showMessageDialog(null, "Dados inválidos, Por favor Verifique-os!");
	txtSenha.setText("");
}

Com dois next() que é um erro, porque, você só precisa de um trazendo as informações da base como eu trouxe, você sabe se o dado é 1 ou 0, com um simples método:

Conta conta = dalConta.findByUserNameAndPassword("usu2", "405060");

você pega

if ( conta.getAdmin() == "1" )

você toma uma decisão!, para você ver que na verdade quem não entendeu foi você!

Mas eu quero fazer com JFrames, tipo logar, criar conta e usar banco de dados para guardar as contas.
Nessa linha do código, especifica a conta né?
Conta conta = dalConta.findByUserNameAndPassword("usu2", "405060");
Tem outro modo?

E quem disse que não da pra fazer. Faz o seguinte, espera outra resposta.

Resposta:
rs.getString(_index__coluna_);
Metôdo:

public void Logar() {

        String sql = "SELECT *from contas where usuario = ? and senha = ?";
        try {
            pst = con.prepareStatement(sql);
            pst.setString(1, txtUsuario.getText());
            pst.setString(2, txtSenha.getText());
            rs = pst.executeQuery();

            if (rs.next()) {
                String adm = rs.getString(4);
                if (adm.equals("1")) {
                    LogadoAdmin la = new LogadoAdmin();
                    la.setVisible(true);
                } else {
                    Logado l = new Logado();
                    l.setVisible(true);
                }
                dispose();
            } else {
                JOptionPane.showMessageDialog(null, "Dados inválidos, Por favor Verifique-os!");
                txtSenha.setText("");
            }
        } catch (SQLException error) {
            JOptionPane.showMessageDialog(null, error.getMessage());
        }
    }