Window forms + entity framework + laczenie z BD

0

Robię apkę Window Forms, tworzę połączenie z bazą danych (microsoft sql server management studio) poprzez entity framework, gdzie mam tabele z logowaniem (Id, username, password).

Typ username i password to nchar(30).

Jak mam logowanie w aplikacji i wpisuje login/hasło (admin/ admin) to wywala mi błąd, że hasło jest złe, login dobry. Dopiero jak zmienię password na nchar(5) --- czyli długość mojego hasła --- to logowanie jest prawidłowe.

Co jest tego przyczyną?

//edit:

Zmieniłem password na typ "text" - działa. No to fajnie, wcześniej robiłem przez nchar i działało. Mimo tego - jakie jest tego wytłumaczenie, że wcześniej działało a teraz nie?

0

Z tego co wiem to nchar musi być w określonej długości. Kolumna będzie wymagać od ciebie, aby hasło było 30sto znakowe, jeśli zmienić na nchar(5) to wpis w tej kolumnie musi mieć dokładnie 5 znaków. Zmień wszystkie kolumny, które mają zawierać tekst na nvarchar i po kłopocie.

0

Właśnie tego nie rozumiem bo "Use nchar when the sizes of the column data entries are consistent." . Login nchar(30) a mimo to "admin" wchodzi, a hasło już nie wchodzi.. musi być fixed-size. Dziwne

0

może daj jakiś kod jak to hasło sprawdzasz

0
 private void btnLogin_Click(object sender, EventArgs e)
        {
            SchoolDBEntities schoolDBE = new SchoolDBEntities();
            if (txtUsername.Text != string.Empty || txtPassword.Text != string.Empty)   //txtUsername/txtPassword = textbox
            {
                var user = schoolDBE.Login_Table.FirstOrDefault(a => a.Username.Equals(txtUsername.Text));
                if (user != null)
                {
                    if (user.Password.Equals(txtPassword.Text))
                    {
                        frmMainMenu mainMenu = new frmMainMenu();    //frm = nowe Window forms
                        mainMenu.ShowDialog();
                    }
                   else
                    {
                        MessageBox.Show("a");
                    }
                }
                else
                {
                    MessageBox.Show("b");
                }
            }
            else
            {
                MessageBox.Show("c");
            }
        }

Ta część kodu odpowiada za logowanie. nvchar dla Username działa, natomiast dla passworda musi być podana dokładna długość -- tak dla przypomnienia :p

1

zamiast user.Password.Equals(txtPassword.Text) zrób user.Password.Trim().Equals(txtPassword.Text.Trim())

0

no i śmiga w ten sposób na nvchar(30)

1 użytkowników online, w tym zalogowanych: 0, gości: 1