Ajuda em C# com Visual Studio?

5 respostas
R

Pessoal,

Estou o usando o MySql Connector 6 que baixei no site mysql.com

Meu programa tem uma tela de login que envia o cpf e a senha pra esse metodo e a função do metodo eh retornar true ou false para se o usuario existe no banco ou nao…
o problema eh na variavel retorno que mesmo com a atribuicao, ta sempre atribuindo 0 mesmo quando o usuario existe…Ou seja como faço pra verificar se o usuario existe ou nao no banco?? o codigo ai eh em C#…

public class ConexaoSQL

{

private String strCon = Server=localhost; Port=3306; DataBase=raphaelsantos; Uid=raphaelsantos; Pwd=raphael0;;

private MySqlConnection conn;
public bool verificarUsuario(String cpf, String senha)
    {
        bool status = false;
        int retorno;
        conn = new MySqlConnection(strCon);
        String SQL = "select count(*) from usuarios where cpf='"+cpf+"' and senha='"+senha+"'";
        MySqlCommand cmd = new MySqlCommand(SQL, conn);
        conn.Open();

        retorno = (int) cmd.ExecuteNoQuery();

        if (retorno > 0)
            status = true;
        return status;
    }
}

vlw galera pela ajuda…

5 Respostas

T

Boa noite Raphael,

Cara tua logica não está legal, veja:

“(int)cmd.ExecuteNoQuery();” neste ponto você pensa que esta pegando o valor do count da tua consulta sql
quando na realidade você simplesmente esta verificando se este método ExecuteNoQuery executou sem erros,
aki a única forma de te retornar um valor diferente de zero e você deixar passar uma consulta sql com sintaxe incorreta e que provoque algum erro
na execução deste método.

Bem uma solução que te dou é a seguinte:

Ao invés de verificar o count busque os dados que deseja:

public bool verificarUsuario(String cpf, String senha)

{

bool status = false;

int retorno;

conn = new MySqlConnection(strCon);

String SQL = “select * from usuarios where cpf=’”+cpf+"’ and senha=’"+senha+"’";//tire o count

MySqlCommand cmd = new MySqlCommand(SQL, conn);

conn.Open();
//crie uma variavel do tipo <MySqlDataReader>
MySqlDataReader mySqlDreader;

//Atribua a esta variavel o datareader retornado do command
mySqlDreader = cmd.EndExecuteReader();

//Agora basta verificar o método <IsDBNull> do seu <MySqlDataReader>
//Eu particularmente uso a seguinte forma:
// status = !mySqlDreader.IsDBNull
//

if (!mySqlDreader.IsDBNull)
	status = true;
	
return status;

}

consultas sql com o parametro count devem ser usadas com cuidado pois nos levam a alguns erros de logica, pois uma sql que possui count sempre
vai retorna um registro, o que quero dizer é:

select count(*) from tabela_tal;

me da um dataset que tem somente um reistro sem nome com um valor inteiro representando a quantidade, o correto e nomear este resultado
tipo:

select count(*) As total_de_registros from tabela_tal;
pois eu poderei acessar diretamente este field.

Bem desejo-lhe sorte e estou ao seu dispor.

Carlos Timoshenko
Analista de Sistemas
"No mundo existem 10 tipos de pessoas…
as que entendem binário e as que nao entendem."

R

Obrigado amigo,
funcionou 100%. GUJ eh excelente ate quando nao é JAVA =D

deixa eu te aperrar só mais um pouco, criei um form que ele vai mostrar todos os usuarios do banco sem a senha obviamente.
peguei um tutorial na net sobre como fazer isso com DataGridView porem os exemplos sao fazendo pagina em aspx. Quando tento fazer no meu form nao funciona pq nao existe o método dataBind() como nos exemplos.

Tem algum codigo que me permita usar o datagridview? ou eh melhor fazer na mao mesmo, pegando os resultados e colocando numa tabela manualmente mesmo???

R

amigo timoshenko

Consegui inserir o DataGridView. Achei interessante que ele ja permite modificar na propria tabela ou inserir ou apagar…
Como eu implemento essas funcoes(atualizar, inserir e deletar) do DataGridView para modfiicar no banco automaticamente???

T

Olá Raphael tudo bem, com relação ao que você solicitou me dê mais informações você deseja criar um CRUD para uma tabela?
Me passe as especificações que eu posto aki uma solução p você. :slight_smile:

Carlos Timoshenko
Analista de Sistemas
"No mundo existem 10 tipos de pessoas…
as que entendem binário e as que não entendem."

R

Exato, quero fazer o CRUD numa tabela…a tabela ta la listando e la mesmo eu ja modifico a tabela e salva no BD, ou insiro uma nova ou deleto…

Vi o que datagrid permite essas modificações na tabela, so preciso saber como alem de modificar na tabela ja ir salvando no BD e dando o refresh na tabela.

outro detalhe, como se cria tabelas simples?? procurei alguma paleta de TABELA mas nao achei no visual studio…

Criado 30 de maio de 2009
Ultima resposta 31 de mai. de 2009
Respostas 5
Participantes 2