передать выбранное значение выпадающего списка в предложение where

#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. Вы можете поместить параметры в любом месте.