Member 14081548 Ответов: 2

Обновление данных C# с помощью SQL-запросов


try
            {
                DBconnection db = new DBconnection();
                db.SqlQuery("Select * from Users_Data Where Email = @em");
                db.cmd.Parameters.AddWithValue("em", textBox1.Text);
                db.ExQuery();
                SqlDataReader dr = db.cmd.ExecuteReader();

                if (dr.Read())
                {

                    db.SqlQuery("Update Users_Data set LoginTimer = " + 1 + "Where Email = @email");
                    db.cmd.Parameters.AddWithValue("email", textBox1.Text);
                    MessageBox.Show("Updated Sucessfully");
                    //logintimer = Convert.ToInt32(textBox1.Text.ToString())   ;
                    //logintimer.return(drr["LoginTimer"].ToString());

                    //dr["Email"].ToString().Contains(textBox1.Text);
                    if (dr["Email"].ToString().Contains(textBox1.Text))
                    {

                        logintimer = Convert.ToInt32(dr["LoginTimer"].ToString());
                    }
                }
            }

            catch (Exception ex)
            {
                MessageBox.Show("" + ex);

            }

            if (logintimer == 1)
            {
                string message = "Plz change your password to continue";
                string title = "Criteria";
                MessageBoxButtons mbb = MessageBoxButtons.YesNo;
                DialogResult result = MessageBox.Show(message, title, mbb);
                if (result == DialogResult.Yes)
                {
                    UserProfile up = new UserProfile(textBox1.Text);
                    up.Show();
                    this.Hide();

                }
                else
                {
                    UserForm uf = new UserForm();
                    uf.Show();
                    this.Hide();
                }
            }
        }


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

я хочу обновить запись и увеличить на один счетчик входа всякий раз когда пользователь входит в систему но в моей таблице базы данных он увеличивается на единицу а не увеличивается выше от одного кто нибудь пожалуйста помогите мне с моим кодом

Bryian Tan

увеличьте Логинтимер на 1? Вы можете обновить запрос до чего-то вроде
"Обновление Users_Data набор LoginTimer = LoginTimer + 1, где электронная почта = электронная почта"

2 Ответов

Рейтинг:
2

MadMyche

Похоже, что ваш оператор update всегда устанавливает значение 1

db.SqlQuery("Update Users_Data set LoginTimer = " + 1 + "Where Email = @email");
что должно быть переведено на
UPDATE Users_Data
SET LoginTimer = 1
WHERE Email = @email


Судя по вашему вопросу и чтению вашего кода; похоже, что то, что вы собираетесь сделать, это увеличивать значение каждый раз, когда вы входите в систему, что-то вроде этого:
UPDATE Users_Data
SET LoginTimer = LoginTimer + 1
WHERE Email = @email
Теперь вернемся к C#.... Обратите внимание, что вам не нужна конкатенация строк здесь (или в оригинальной версии)
db.SqlQuery("Update Users_Data set LoginTimer = LoginTimer + 1 Where Email = @email");


Рейтинг:
1

Dave Kreskowiak

На самом деле ваш SQL-запрос выглядит следующим образом:

Update Users_Data set LoginTimer = 1Where Email = @email

Вам нужен пробел между предложениями 1 и WHERE.

Вам также не нужно разбивать 1 на числовое значение. Он может быть просто частью строки без операторов+.
db.SqlQuery("UPDATE Users_Data SET LoginTimer = 1 WHERE Email = @email");