Что вы действительно должны сделать, так это использовать параметризованный запрос, поэтому ваш запрос будет выглядеть следующим образом:
var query = "insert into Customer_info(Customer_Name,Customer_Phone)" +
"values(@name, @phone);";
Затем вы бы использовали объект SQLCommand
для передачи параметров в запрос:
using (var command = new SqlCommand(query, connection))
{
command.Parameters.AddWithValue("@name", name);
command.Parameters.AddWithValue("@phone", phone);
command.ExecuteNonQuery();
}
Причина этого заключается в том, что он предотвращает риск SQL-инъекции (который является одним из OWASP Top 10 ). Подумайте на минуту о вашем текущем запросе, если переданный name
содержит какой-то SQL, например, если он содержит:
'; DROP TABLE [Customer_info]; -
Это будет означать, что ваш построенный SQL (если бы phone
был пустым) выглядел бы так:
insert into Customer_info(Customer_Name,Customer_Phone) values ('';
DROP TABLE [Customer_Info];
-- ','');
Это может привести к удалению вашей таблицы Customer_Info
, если у пользователя, который подключается к SQL-коду, есть достаточные права для этого.