Nganku Junior Ответов: 1

Как войти в систему с помощью sqlserverce


Привет,
Я пытаюсь написать приложение login Windows form с sqlserverce в качестве базовой базы данных. Проблема в том, что я терпел неудачу. Есть ли ошибка в моем синтаксисе ?
естественно я добавил ссылку на пространство имен SqlServerCe а также в ссылочные библиотеки DLL
пожалуйста, не обращайте внимания на конкатенацию строк. Это написано в тестовой среде.
Пожалуйста помочь

Что я уже пробовал:

private void button1_Click(object sender, EventArgs e)
        {
            string lg = "select username, password from creds where username= '" + txtusername + "' and password= '" + txtpassword + "'";

            con.Open();
            SqlCeCommand cmd = new SqlCeCommand(lg, con);
            SqlCeDataReader dr;
            dr = cmd.ExecuteReader();
            int k = 0;
            while (dr.Read())
            {
                k++;
            }

            if (k == 1)
                MessageBox.Show("success!");

            else
                MessageBox.Show("failure");

            con.Close();
        }

PIEBALDconsult

0) пожалуйста, научитесь использовать параметризованные операторы.
1) Пожалуйста, не храните простые текстовые пароли.
2) Пожалуйста, не помещайте код доступа к данным непосредственно в код пользовательского интерфейса.
Здесь есть много статей, которые должны помочь:
https://www.codeproject.com/Articles/704865/Salted-Password-Hashing-Doing-it-Right
https://www.codeproject.com/Articles/608860/Understanding-and-Implementing-Password-Hashing
https://www.codeproject.com/Articles/425150/Beginners-guide-to-a-secure-way-of-storing-passwor
https://www.codeproject.com/Articles/54164/Secure-Password-Authentication-Explained-Simply

NotPolitcallyCorrect

Что значит "провал"? Вы получаете какие-нибудь ошибки? Какие ошибки вы получаете? Когда вы проходите через свой код, что содержат ваши переменные? Что содержит ваш запрос? Действительно ли ваше соединение открыто или вы тоже получаете ошибки?

1 Ответов

Рейтинг:
0

jekin77

using System.Data.SqlClient;

private void button1_Click(object sender, EventArgs e)
    {
        string conString = "Data Source=MyData.sdf;Persist Security Info=False;";
        string lg = "select username, password from creds where username= '" + txtusername + "' and password= '" + txtpassword + "'";

        SqlCeConnection con = new SqlCeConnection();
        con.ConnectionString = conString;
        SqlCeCommand selectCmd = con.CreateCommand();
        selectCmd.CommandText = lg;

        SqlCeDataAdapter adp = new SqlCeDataAdapter(selectCmd);

        DataSet ds = new DataSet();

        // Note: Fill will leave the connection in its original state;
        // In this case, the connection was closed so it will be left closed
        //
        adp.Fill(ds);



        if (ds.Tables[0].Rows.Count > 0)
            MessageBox.Show("success!");

        else
            MessageBox.Show("no data exists");

    }


NotPolitcallyCorrect

Не могли бы вы указать описание проблемы в публикации OPs, а затем указать, как ваш код решает эту проблему?

jekin77

Итак, вопрос был: "есть ли ошибка в моем синтаксисе ?" да !!!
Мой ответ-правильный !!!
Просто сравните два фрагмента, вы увидите разницу, которая не нуждается в каких-либо объяснениях!!!