Array
(
)

c# e SQl ajudae

W0id
   - 06 out 2008

bom minha duvida eh que nao sei fazer como pegar o conteudo de uma SQL
no banco de dados.Como faço?preciso buscar o login pra validar o login e depois a senha.


public partial class FrmLogin : Form
{
private OleDbConnection conexao;
private OleDbCommand comando;

public FrmLogin()
{
InitializeComponent();
String str = @´Provider=Microsoft.Jet.OLEDB.4.0;Data Source=´C:\Documents and Settings\Administrador\Desktop\Hospital.mdb´´;

this.conexao = new OleDbConnection(str);
this.comando = new OleDbCommand();

this.comando.Connection = this.conexao;
FrmPesquisaAdministrador frm = new FrmPesquisaAdministrador();
}

private void FrmLogin_Load(object sender, EventArgs e)
{
}

private void button1_Click(object sender, EventArgs e)
{
String Login = this.txtLogin.Text;
String pw = this.txtSenha.Text;
String lg = ´ SELECT usario FROM Usuarios WHERE usuario = ´ ´+ Login +´´ ´;

OleDbCommand cmd = new OleDbCommand();
cmd.Connection = this.conexao;
cmd.CommandText = lg;
cmd.ExecuteNonQuery();
this.conexao.Open();
this.conexao.Close();
}
}


Knight_of_wine
   - 06 out 2008

#Código


public partial class FrmLogin : Form
{
private OleDbConnection conexao;
private OleDbCommand comando;

public FrmLogin()
{
InitializeComponent();
String str = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=´C:\Documents and Settings\Administrador\Desktop\Hospital.mdb´";

this.conexao = new OleDbConnection(str);
this.comando = new OleDbCommand();

this.comando.Connection = this.conexao;
FrmPesquisaAdministrador frm = new FrmPesquisaAdministrador();
}

private void FrmLogin_Load(object sender, EventArgs e)
{
}

private void button1_Click(object sender, EventArgs e)
{
String Login = this.txtLogin.Text;
String pw = this.txtSenha.Text;
String lg = " SELECT usario FROM Usuarios WHERE usuario = ´ "+ Login +"´ ";

OleDbCommand cmd = new OleDbCommand();
cmd.Connection = this.conexao;
cmd.CommandText = lg;

this.conexao.Open();

OleDbDataReader rd = cmd.ExecuteReader;
if (rd.Read())
{
//Coloque sua lógica de login aqui.
}
else
{
//Login Falhou
}

this.conexao.Close();
}
}



O seu problema é que você utilizou o método ExecuteNonQuery do Command. Esse método é utilizado para comandos de Insert, Update ou Delete, que não retornam dados.

Outra coisa, abra sua conexão antes de executar o command e não depois.

Use o código acima que vai dar certo.


W0id
   - 07 out 2008

vlw pela ajudaa

W0id
   - 07 out 2008

OleDbDataReader rd = cmd.ExecuteReader(); <---aqui da 1 erro dizendo q recebeu nulo
if (rd.Read())
{
if(rd.equals(Login)) //Logica de login seria essa?
{
frm.show();
}
}
else
{
messagebox.show(´login invalido´);
}

this.conexao.Close();


Ricardo Silva
   - 07 out 2008

exemplo

OleDbDataReader rd = cmd.ExecuteReader(); <---aqui da 1 erro dizendo q recebeu nulo
if (rd.Read())
{
if(rd[´nomeLogin´].ToString() == ´Usuario1´) //Logica de login é essa!
{
frm.show();
}
}
else
{
messagebox.show(´login invalido´);
}

this.conexao.Close();


W0id
   - 07 out 2008

this.conexao.Open();
FrmPesquisaAdministrador frm = new FrmPesquisaAdministrador();

String Login = this.txtLogin.Text;
String pw = this.txtSenha.Text;
String nv = this.cbNivel.Text;
String lg = ´ SELECT * FROM Usuarios WHERE usuario = ´´+ Login +´´ and senha = ´´+ pw +´´ ´;


OleDbCommand cmd = new OleDbCommand();
cmd.Connection = this.conexao;
cmd.CommandText = lg;

OleDbDataReader rd = cmd.ExecuteReader();

if (rd.Read())
{
//seria aki a logica do nivel de acesso mas como faze-lo?
frm.Show();
}
else
{
MessageBox.Show(´login inexistente´);
}

this.conexao.Close();


sim n to entendendo direito...tipo...eu preciso saber se o nivel do usuario eh admin ou operador...pois tenho q abrir 1 form diferente pra cada 1
e o execute reader eu posso usalo mais de uma vez? ajudae :S


Knight_of_wine
   - 08 out 2008

Depende de como você define o nível de usuário.

Se for através um campo na tabela de login você pode fazer assim:

#Código



if (rd.Read())
{
if (rd["ADMIN"] == "S")
{
//Abra seu form de admin
}
else
{
//Abra o outro form
}
}
else
{
MessageBox.Show("login inexistente");
}