Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 20.11.2020
Сообщений: 7

Запись в бд дату/время входа пользователя

09.04.2021, 21:27. Показов 2507. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть база данных в которой есть столбцы(ID, Login, Password, Date), нужно что-бы при правильном заполнении textbox-ов открывалась вторая форма(это уже сделано и работает) и заносилось время когда пользователь ввёл всё правильно. Мне нужно только понять как у каждого пользователя обновлять поле Date на новое и как определять какому пользователю это делать.
Например:
пользователь вводит Login:абвгд Password:1234 и происходит открытие второй формы на которой находится datagridview с подключенной базой и в строке у пользователя абвгд в колонке Date обновлялось дата и время на то когда была нажата кнопка Вход, а у остальных пользователей дата оставалось неизменной.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.04.2021, 21:27
Ответы с готовыми решениями:

Время последнего входа пользователя
Как отслеживать время последнего входа пользователя на сайт ?

Сохранить в bat-файл время и дату входа в систему
Добрый день, необходимо сохранить время и дату входа в систему в файл с помощью bat-файла. Использую следующую комнаду echo net user...

Время входа пользователя в систему
Win10, учетка урезана в правах (нет доступа к WMI, некоторые из утилит недоступны согласно наложенным на них политикам), возможно ли...

3
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
09.04.2021, 22:17
Вижу здесь только одну "проблему" - какое время брать: клиентское или серверное.
Т.е. либо время брать с клиента и класть его в запрос Update, либо в самом запросе писать Current_timestamp, чтобы записать время серверное
0
0 / 0 / 0
Регистрация: 20.11.2020
Сообщений: 7
09.04.2021, 22:26  [ТС]
Нужно брать время которое задано на компе(которое сейчас), но я не знаю как обновить время у того пользователя который осуществляет вход.

Добавлено через 6 минут
Если можно приведите пример кода как это можно осуществить при использовании запроса Update.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
10.04.2021, 00:51
Класс модели "Пользователь" (UserProfile.cs в папке Models на корню проекта
C#
1
2
3
4
5
6
7
    public class UserProfile
    {
        public int Id { get; set; }
        public string Login { get; set; }
        public string Password { get; set; }
        public DateTime LastEntryTime { get; set; }
    }
Класс репозиторий (Repositoty.cs на корню проекта)
C#
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
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
using WindowsFormsApplication1.Models;
 
namespace WindowsFormsApplication1
{
    public static class Repository
    {
        private static string _connectionstring = @"Data Source=MSGUNS-PC\MSSQLEXPRESS; Initial Catalog=Animals; Integrated Security=True";
        private static SqlConnection conn;
 
        public static UserProfile GetUserProfByLoginPassword(string login, string password)
        {
            using (SqlConnection con = new SqlConnection(_connectionstring))
            {
                UserProfile UP = new UserProfile();
                string SQLtext = "SELECT [Id], [Login], [Password] FROM [USERS] WHERE [Login] = @login AND [Password] = @password";
                SqlCommand SQLcmd = new SqlCommand(SQLtext, con);
                SQLcmd.Parameters.AddWithValue("@login", login);
                SQLcmd.Parameters.AddWithValue("@password", password);
                SqlDataReader rd = SQLcmd.ExecuteReader();
                while (rd.Read())
                {
                    UP.Id = rd.GetInt32(0);
                    UP.Login = rd.GetString(1);
                    UP.Password = rd.GetString(2);
                }
                return UP;
            }
        }
 
        public static int UpdateUserLastEntryTime(UserProfile UP)
        {
            UserProfile UPnew = GetUserProfByLoginPassword(UP.Login, UP.Password);
            if (UPnew == null)
               return -1; // Ошибка: Пользователь не найден в БД
            using (SqlConnection con = new SqlConnection(_connectionstring))
            {
                string SQLtext = "UPDATE [USERS] SET [LastEntryTime] = @datetime  WHERE [Id] = @id";
                SqlCommand SQLcmd = new SqlCommand(SQLtext, con);
                SQLcmd.Parameters.AddWithValue("@datetime", UP.LastEntryTime);
                SQLcmd.Parameters.AddWithValue("@id", UP.Id);
                SQLcmd.ExecuteNonQuery();
                return 0; // Запись изменена
            }
        }
    }
}
Класс формы
C#
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
    public partial class Form1 : Form
    {
        public UserProfile USER_PROFILE;
        public Form1()
        {
            InitializeComponent();
        }
 
        public void Check_User_Profile(string login, string password)
        {
            USER_PROFILE = Repository.GetUserProfByLoginPassword(login, password);
        }
 
        public void Change_User_LastEntry()
        {
            if (USER_PROFILE == null) return;
            USER_PROFILE.LastEntryTime = DateTime.Now;
            if (Repository.UpdateUserLastEntryTime(USER_PROFILE) != 0)
                MessageBox.Show("Пользователь не найден в БД !");
            else
                MessageBox.Show("Время входа успешно внесено в базу данных");
        }
 
        private void btnChangeUserLastEntry_Click(object sender, EventArgs e)
        {
            if (USER_PROFILE == null) return;
            USER_PROFILE.Login = tbLogin.Text;
            USER_PROFILE.Password = tbPassword.Text;
            Change_User_LastEntry();
        }
 
    }
Добавлено через 17 минут
Честно говоря, устал писать это, но надо

Необходимые пояснения:
1. Проект реализован по шаблону SOLID https://ru.wikipedia.org/wiki/... 0%B8%D0%B5)
2. Код, реализующий функционал взаимодействия Пользователя с GUI (формы) ничего не знает о таблицах БД, как и о самой БД. Он работает с абстрактными сущностями-моделями, реализующими отображение сущностей СУБД (таблицы, запросы, UDF, View, SP)
3. Классы модели - классы, описывающие сущности СУБД (поля, зависимости и т.д.)
4. Репозиторий - статический класс, реализующий методы обмена с СУБД как методы, принимающие некоторые исходные параметры, и возвращающие модели или списки моделей (List<T>). Инкапсулирует весь код, включая создание классов доступа к БД (SqlClient, OleDb, ORM и т.д.), а также параметры соединения с Хранилищем Данных (СУБД, MS Office, xml, csv, json, txt..)

Общая "философия" подхода:
I. Формы ничего не знают о БД
II. Репозиторий и Модели ничего не знают о формах
III. Всем формам доступны как Модели, так и Репозиторий
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.04.2021, 00:51
Помогаю со студенческими работами здесь

Получить время входа в систему пользователя
Есть такая функция, но выдаёт время на годы вперёд, что не так? function VremaVxoda:string; type TUSER_INFO_3 = record ...

Определить время последнего входа в систему пользователя на удаленном пк (PowerShell to C#)
Доброго времени суток, знатоки c#. есть код, который определяет время последнего входа в компьютер пользователя на удаленном компьютере в...

Время входа в учетную запись
Добрый день. Выкидываем пользователя через LockWorkStation (аналог Win+L) потом он входит. - Как определить время его вхождения? ...

Записать в cookie дату и время первого визита пользователя
Помогите, пожалуйста, написать скрипт : Записать в cookie дату и время первого визита пользователя. Вывести в браузер: «Ваш первый визит:...

Запросить у пользователя время/дату, и проверить, совпадают ли они с системными
1. Написать командный файл. который: • запрашивает у пользователя время, а потом дату • если дата и время совпадают с системными, то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru