Я создаю небольшой проект wpf, который включает в себя регистрацию пользователей. В этом проекте я использую dataAdapter для загрузки данных из базы данных в datatables.Как синхронизировать данные с базой данных
con = new SqlConnection(connectionString);
string query = "select * from Users;";
cmd = new SqlCommand(query, con);
da = new SqlDataAdapter();
da.SelectCommand = cmd;
users = new DataTable();
con.Open();
da.Fill(users);
базы данных имеют 6 столбцов Id, который является автоматическое приращение, имя пользователя, пароль, имя и два столбца INT типа со значением по умолчанию к нулю. Вот схема базы данных.
CREATE TABLE [dbo].[Users] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[username] NVARCHAR (20) NOT NULL,
[password] NVARCHAR (20) NOT NULL,
[name] NVARCHAR (50) NULL,
[attempted] INT DEFAULT ((0)) NULL,
[correct] INT DEFAULT ((0)) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC),
UNIQUE NONCLUSTERED ([username] ASC)
);
Всякий раз, когда я ввожу нового пользователя в DataTable я только предоставить имя пользователя, пароль и имя остальные поля должны быть заполнены автоматически, но DataTable только сохранить предоставленные поля и остальные оставлены пустыми, и когда я называю
da.update(users);
он обновляет данные в базе данных, а оставшиеся поля заполняются автоматически. butt datatable по-прежнему содержит эти поля в виде пустых столбцов.
Но мне нужен идентификатор пользователя, чтобы обновить или удалить пользователя. Проблема в том, как можно синхронизировать данные с базой данных для обновленных полей, чтобы я мог использовать их для дальнейших операций. Спасибо в Advance за вашу помощь.
Update: Вставка запроса и параметры приведены ниже
query = "insert into Users (username, password, name)values(@u, @p, @n)";
SqlCommand insertcmd = new SqlCommand(query, con);
insertcmd.Parameters.Add(new SqlParameter("u", SqlDbType.NVarChar, 20, "username"));
insertcmd.Parameters.Add(new SqlParameter("p", SqlDbType.NVarChar, 20, "Password"));
insertcmd.Parameters.Add(new SqlParameter("n", SqlDbType.NVarChar, 50, "name"));
da.InsertCommand = insertcmd;
Предупреждение. Вы сохраняете пароли в текстовом виде в своей базе данных. Это * не * хорошая практика. Пароли должны быть одним из способов хэширования и соления. Важно соблюдать хорошие методы обеспечения безопасности. – mason
Спасибо за ваше предложение. Но этот проект - просто домашнее задание для практики. Поэтому на данный момент никаких проблем с безопасностью. –
Ничего в этом вопросе не связано с WPF. Удален нерелевантный тег. –