#c# #asp.net #sql-server #tsql #parameters
#c# #asp.net #sql-сервер #tsql #параметры
Вопрос:
Я вставляю в таблицу с помощью запроса newxt, но я не знаю, какой синтаксис для указания запроса, который мне нужно вставить, где training_id = amp;dateSelectedamp; , приведенный ниже запрос работает с использованием статического значения для проверки (2) .
Пожалуйста, помогите.
private void InsertInfo()
{
var dateSelected = dpDate.SelectedItem.Value;
SqlConnection conn = new SqlConnection(GetConnectionString());
string sql = "INSERT INTO personTraining (name,training_id, training,trainingDate,trainingHour, trainingSession)SELECT @Val1,training_id,training,trainingDate,trainingHour,trainingSession FROM tbl_training WHERE training_id = 2";
Комментарии:
1. Если вы расширите свой код, чтобы показать, как выполняется инструкция SQL, а также как используется @Val1, мы можем предоставить более конкретные примеры.
Ответ №1:
Используйте параметры следующим образом:
private void InsertInfo()
{
var dateSelected = dpDate.SelectedItem.Value;
using(SqlConnection conn = new SqlConnection(GetConnectionString()))
{
conn.Open();
SqlCommand command= conn.CreateCommand();
command.CommandText= "INSERT INTO personTraining (name,training_id, training,trainingDate,trainingHour, trainingSession)SELECT @Val1,training_id,training,trainingDate,trainingHour,trainingSession FROM tbl_training WHERE training_id = @trainingID";
command.Parameters.AddWithValue("@trainingID",dateSelected);
command.ExecuteNonQuery();
}
Однако в вашем запросе есть другой @Val1
параметр; Я не знаю, откуда это берется.
Комментарии:
1. спасибо, думаю, я понял, поэтому мы больше не можем использовать символы ‘amp;’ в .net?
2. @user959443: вы можете использовать их в VB.NET для объединения строк, но это ужасная практика, когда дело доходит до построения SQL-запросов. Никогда не делайте этого, потому что вы подвергнете себя атакам SQL-инъекций.
Ответ №2:
Вот простой пример. Я не знаю, как вы выполняете свой, string sql
поэтому я буду использовать SqlCommand
пример на основе.
SQL:
INSERT INTO personTraining
(name,training_id, training,trainingDate,trainingHour, trainingSession)
SELECT @Val1,training_id,training,trainingDate,trainingHour,trainingSession
FROM tbl_training
WHERE training_id = @training_id;
C#:
SqlCommand cmd = conn.CreateCommand();
cmd.Parameters.AddWithValue("training_id", dateSelected);
Ответ №3:
Добавьте другой объект параметра к объекту SqlCommand и установите значение параметра на выбранную дату.
Комментарии:
1. Привет, мне нужно передать выбранный идентификатор для предложения where, а не значение, как бы я это сделал? <asp: идентификатор выпадающего списка =»dpDate» runat=»server» DataSourceID=»SqlDataSource1″ DataTextField=»trainingDate» DataValueField=»training_id» AppendDataBoundItems=»True»> <asp: Выбранный список=»True»> Выберите дату</asp:ListItem> </asp: выпадающий список>
2. Вы можете поместить параметры в любом месте.