OriginalGriff
Без вашей фактической базы данных мы не можем быть конкретными, но, как говорит Джерри, "поместите идентификатор в запись". Поэтому добавьте столбец "AuthorisedUser", а когда вы вставляете строку, установите ее на идентификатор пользователя, выполняющего вставку.
Затем вы можете добавить это в предложение WHERE при выполнении операций выбора и обновления:
UPDATE ... WHERE AuthorisedUser = @UID AND RowID = ...
Я подозреваю, что именно для этого существуют ваши столбцы "insert_user", но мы действительно не можем сказать.
Но есть еще пара вещей:
1) Сделайте себе одолжение и прекратите использовать имена Visual Studio по умолчанию для всего - вы можете помнить, что "TextBox8" - это номер мобильного телефона сегодня, но когда вам нужно будет изменить его через три недели, вы это сделаете? Используйте описательные имена - например, "tbMobileNo", - и ваш код станет легче читать, более самодокументируемым, легче поддерживать - и на удивление быстрее кодировать, потому что Intellisense может добраться до "tbMobile" за три нажатия клавиш, где "TextBox8" занимает размышление и 8 нажатий клавиш...
2) Проверьте типы столбцов. Вы передаете текстовые строки для каждого значения там, и хотя это, вероятно, правильно для имени, фамилии и т. д., Для "insert_user" это, вероятно, очень неправильно, так как этот идентификатор пользователя, скорее всего, является числовым полем идентификации (или если это не так, то, вероятно, должно быть) - вы не должны хранить идентификатор пользователя в виде строки более одного раза во всем приложении!
Обычно у вас есть две таблицы: одна содержит сведения о пользователе: идентификатор пользователя, имя, пароль... и отдельная, в которой хранятся данные. Использование строки здесь подразумевает, что вы используете строки для всего, и это очень плохая идея, которая даст вам проблемы позже. Всегда храните значения в наиболее подходящем типе!
3) Всегда перечисляйте свои столбцы, никогда не вставляйте их в порядке следования столбцов по умолчанию:
INSERT INTO MyTable ([Name], Surname, ...) VALUES (@NAME, @SURNAME, ...)
Вместо
INSERT INTO MyTable VALUES (@NAME, @SURNAME, ...)
поскольку это делает две вещи: это делает ваш код более "будущим доказательством" - если порядок БД изменяется, ваш код не падает или, что еще хуже, не набирает данные в неправильные столбцы; и это означает, что он все еще работает, когда ваше значение идентификатора строки (которое, если у вас его нет, черт возьми, должно быть) является полем идентификации. Если вы не укажете столбцы, SQL будет начинаться с "самого верхнего" столбца и принимать порядок, что опасно.
4) вместо использования
try...finally
рассмотрим а
using
блок вместо этого:
private void button1_Click(object sender, EventArgs e)
{
using (SqlConnection con = new SqlConnection(DALC.Getconnectionstring()))
{
con.Open();
using (SqlCommand cmd = new SqlCommand("...",con))
{
...
try
{
...
}
catch (SqlException ex)
{
...
}
...
}
}
Таким образом, объекты БД будут закрыты и удалены автоматически, когда они выйдут за пределы области видимости.
Alish93
как я могу показать вам его с картинками? Я знаю ваши 3-ю и 4-ю рекомендации. Это был тестовый код, вот почему я их не заметил.
У меня есть два стола:
1)контакты(где хранится информация о пользователях) таблица типа:
Имя столбца: тип данных:
Идентификатор инт
Имя варчар(30)
Фамилия типа varchar(30)
Компания варчар(30)
INSERT_USER инт
2)пользователи(регистрационная информация пользователей), как это:
ИМЯ СТОЛБЦА: ТИП ДАННЫХ:
Идентификатор инт
Имя пользователя varchar(30)
Фамилия типа varchar(30)
Имя варчар(30)
Фамилия типа varchar(30)
Поэтому я хочу сказать, что если зарегистрированный пользователь войдет на главную страницу=> Он/она перейдет в таблицу контактов. в этой форме у меня есть datagridview ниже, кнопка добавления,обновления и удаления. Поэтому, если я добавлю некоторые контакты в эту таблицу(в форме 3. Форма 1-это страница входа, форма 2-Страница регистрации), я сам должен увидеть эти контакты. Как я могу написать код, чтобы другой вошедший пользователь не мог видеть этот контакт? Я думаю, что столбец insert_user - это мой внешний ключ, а ID в таблице USER-первичный ключ. Если у вас есть что-то, с чем вы можете поддерживать связь, я могу это показать