Я решил закодировать программу контактов, которая будет подключаться к SQL-серверу. Почти я доработал код и программа работает хорошо. Но у меня есть проблема. Когда пользователь хочет удалить контакт из этой программы, ему необходимо ввести фамилию контакта, которую он хочет удалить, а затем нажать кнопку «Удалить» в форме. Хорошо, что этот способ не очень хорош, потому что возможно, что были, например, 5 парней с тем же именем. Я решил добавить поле на SQL-сервере под именем Code. Этот код уникален для каждого контакта. Но у меня есть проблема. как я должен программировать код, чтобы всякий раз, когда пользователь вводил информацию о контакте и нажимал кнопку «Сохранить», этот уникальный код автоматически добавляется в поле «Код» на SQL-сервере? здесь мои коды вы можете увидеть:Установить код на SQL-сервер и показать в DataGridView
namespace Contact
{
class Operation
{
SqlConnection cn;
public Operation()
{
cn = new SqlConnection(Connection.Server);
}
public DataTable Show()
{
SqlCommand cmd = new SqlCommand("select * from tblContact ", cn);
SqlDataAdapter da = new SqlDataAdapter(cmd.CommandText, cn);
DataTable dt = new DataTable();
da.Fill(dt);
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
return dt;
}
public void Add(string Name , string FamilyName , string Work , string Fax , string Phone , string Home)
{
SqlCommand cmd = new SqlCommand("insert into tblContact(Name,FamilyName,Work,Fax,Phone,Home) values ('" + Name + "' , '" + FamilyName + "' , '" + Work + "' , '" + Fax + "' , '" + Phone + "' , '" + Home + "')", cn);
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
}
public void Delete(string FamilyName)
{
SqlCommand cmd = new SqlCommand("delete from tblContact where FamilyName = '" + FamilyName + "'", cn);
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
}
public void Update (string Name , string FamilyName , string Work , string Fax , string Phone , string Home)
{
SqlCommand cmd = new SqlCommand("update tblContact set FamilyName = '" + FamilyName + "' ,Work = '" + Work + "' , Fax = '" + Fax + "' , Name = '" + Name + "' , Home = '" + Home + "' where Phone = '" + Phone + "'",cn);
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
}
}
}
поиск о [IDENTITY столбцов] (https://msdn.microsoft.com/en-us/library/ms186775.aspx? е = 255 & MSPPError = -2147217396). И после этого посмотрите, как написать параметризованный запрос. Ваш код является бесплатным пропуском для каждого хакера – Steve
, если вы разрешаете пользователю выбирать из DataGridView, а затем отбирать все столбцы, которые вам нужно, скрывать поле ключа Identity в DataGridView и когда пользователь выбирает строку .. тогда вы делаете 'foreach (строка DataGridViewRow в вашемDataGridView.SelectedRows)', тогда вы можете захватить KeyId, например, и удалить из таблицы, где KeyId = Selected KeyId из 'row.Cells [0] .Value' – MethodMan
Вам нужно прочитать, понять и начать использовать параметризованные запросы немедленно. Это широко открыта для SQL-инъекции. И вам действительно следует избегать использования select *, если оно не находится внутри EXISTS –