C sharp - Validad ventana de WindowsForms con base de datos (acess)

 
Vista:

Validad ventana de WindowsForms con base de datos (acess)

Publicado por Sebastian (1 intervención) el 11/06/2015 01:33:01
Hola tengo un proyecto de encuentas, tengo todo el esqueleto ya armado. El problema es que no puedo hacer que de de la ventana de Login se valide los usuarios que ya tengo cargado en la base de datos que esta en un Acess aca dejo la parte del codigo donde tengo problema. Muchas gracias

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Repository.Model;
using Repository;
using TPEncuestaWin;
 
namespace TPEncuestaWin {
  public partial class FrmMain : Form {
    public FrmMain() {
      InitializeComponent();
    }
 
    private void FrmMain_Load(object sender, EventArgs e)
    {
        FrmLogin f = new FrmLogin();
        if (f.ShowDialog() == DialogResult.OK)
        {
            ContextRepository cx = new ContextRepository("Direccion de la base de datos");
            Usuario u = cx.GetUsuario(f.GetTbLogin());
            if (u !=null)
            {
 
                if(u.Password= ){
 
 
                }else{
 
                }
            }
            else
            {
 
            }
 
            }
            else
            {
                MessageBox.Show("Tiene que ingresar datos");
                Application.Exit();
 
            };
        }
    }
 
    private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
    {
 
    }
  }
}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Repository;
using Repository.Model;
 
namespace TPEncuestaWin
{
    public partial class FrmLogin : Form
    {
        public FrmLogin()
        {
            InitializeComponent();
        }
        private void FrmLogin_Load(object sender, EventArgs e)
        {
 
        }
 
        public string GetTbLogin(){
            return tbUsuario.Text;
        }
 
        private void tbUsuario_TextChanged(object sender, EventArgs e)
        {
 
        }
 
        private void tbPassword_TextChanged(object sender, EventArgs e)
        {
 
        }
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data.OleDb;
using Repository.Model;
 
namespace Repository {
 
 
 
    public class ContextRepository {
        private String ConnectionString;
 
        //Lista de usuarios precargados, cuando el contexto retorna algo
        //debe guardar la referencia para poder salvarlo posteriorme.
        //Si se vuelve a pedir por el mismo elemento se toma de la lista y no se
        //vuelve a consultar a la base de datos
 
        private List<Usuario> lu = new List<Usuario>();
 
        public ContextRepository(String cs) {
            ConnectionString = cs;
 
        }
 
 
        public List<Usuario> GetUsuarios() {
 
 
            //Existen varias formas de resolver esto, como es la tabla usuario que se presume pequeña traigo
            //todos los registros inserto en la lista que un metodo especial que preguntara si el objeto existe o no.
            //Se veran mas adelante formas mas inteligentes de hacer esto esto
 
            OleDbConnection conn = new OleDbConnection(this.ConnectionString);
            conn.Open();
            OleDbCommand comm = new OleDbCommand("Select * from Usuario", conn);
            OleDbDataReader dr = comm.ExecuteReader();
            if (dr.HasRows) {
 
                while (dr.Read()) {
                    Usuario u = new Usuario();
                    u.Login = dr["Login"].ToString();
                    u.Password = dr["Password"].ToString();
                    u.Nombre = dr["Nombre"].ToString();
                    AddToList(u);
                };
 
            } else {
 
            }
            return lu;
 
        }
 
 
        public List<TipoEncuesta> GetTiposEncuesta() {
            List<TipoEncuesta> result = new List<TipoEncuesta>();
 
            OleDbConnection connection = new OleDbConnection(ConnectionString);
            connection.Open();
 
            OleDbCommand c1 = new OleDbCommand("Select * from TipoEncuesta", connection);
            OleDbDataReader dr1 = c1.ExecuteReader();
 
            while (dr1.Read()) {
                TipoEncuesta te = new TipoEncuesta();
                te.Idtipoencuesta = Convert.ToInt32(dr1["IdTipoEncuesta"]);
                te.Nombre = dr1["Nombre"].ToString();
                result.Add(te);
            }
 
 
            return result;
        }
 
 
        private void AddToList(Usuario u) {
            //busco si el usuario existe, sino lo agrego a la lista
            //.Net tiene formas mejores de realizar esto, en lugar de busqueda secuencial
            //Se pueden utilizar metodos anonimos y el metodo find de la lista
            Boolean encontrado = false;
            foreach (Usuario usuarioenlista in lu) {
                if (usuarioenlista.Login == u.Login) {
                    //Existe, no hay nada que hacer por ahora
                    encontrado = true;
                } else {
 
                    //No existe debo agregar a mi lista
 
                }
            }
 
            if (!encontrado) {
                lu.Add(u);
            }
 
 
 
        }
 
 
 
        public Usuario NuevoUsuario() {
            return null;
        }
 
        public Usuario GetUsuario(String Login) {
 
            //Tarea para el grupo: Aplicar la tecnica de lista cache en este metodo tambien
            OleDbConnection conn = new OleDbConnection(this.ConnectionString);
            conn.Open();
            OleDbCommand comm = new OleDbCommand("Select * from Usuario Where Login=@Login", conn);
            comm.Parameters.AddWithValue("@Login", Login);
 
            OleDbDataReader dr = comm.ExecuteReader();
            if (dr.HasRows) {
                dr.Read();
                Usuario Result = new Usuario();
 
 
                Result.Login = dr["Login"].ToString();
                Result.Password = dr["Password"].ToString();
                Result.Nombre = dr["Nombre"].ToString();
 
                return Result;
            }
            return null;
 
        }
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder