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
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());
}
}