Andreas322 Ответов: 1

Неверное значение даты: '17/4/2020 2:38:44 pm' для столбца 'stock_sales_system'.'customer'.'startdate' в строке 1


query = "insert into stock_sales_system.customer() values('" & txtCustomerName.Text & "', '" & txtAddress.Text & "', '" & cbxCity.Text & "', '" & txtTelephone.Text & "', '" & dtpDate.Value & "', '" & txtDescription.Text & "', '" & 0 & "', '" & 0 & "')"


Что я уже пробовал:

я изменил формат DateTimePicker на пользовательский "гггг-ММ-ДД", но столкнулся с той же проблемой

1 Ответов

Рейтинг:
11

phil.o

using (SqlCommand cmd = new SqlCommand(connection))
{
   cmd.CommandText = "INSERT INTO stock_sales_system.customer (name, address, city, telephone, datefield, description, unknownfield1, unknonwnfield2) VALUES (@name, @address, @city, @telephone, @date, @description, @field1, @field2)";
   cmd.Parameters.Add("@name", SqlDbType.NVarChar).Value = txtCustomerName.Text;
   cmd.Parameters.Add("@address", SqlDbType.NVarChar).Value = txtAddress.Text;
   cmd.Parameters.Add("@city", SqlDbType.NVarChar).Value = cbxCity.Text;
   cmd.Parameters.Add("@telephone", SqlDbType.NVarChar).Value = txtTelephone.Text;
   cmd.Parameters.Add("@date", SqlDbType.DateTime).Value = dtpDate.Value;
   cmd.Parameters.Add("@description", SqlDbType.NVarChar).Value = txtDescription.Text;
   cmd.Parameters.Add("@field1", SqlDbType.Int).Value = 0;
   cmd.Parameters.Add("@field2", SqlDbType.Int).Value = 0;
   int result = cmd.ExecuteNonQuery();
}


Здесь вам придется указать правильные имена столбцов, так как я должен был угадать их, так как вы их не показывали.

Вредные привычки, которые вы должны потерять как можно скорее:

  • построение SQL-запросов путем объединения строк, полученных из входных данных use; это нецелесообразно, так как это оставляет ваш код широко открытым для атак SQL-инъекций.
  • не указывая имена столбцов в ваших SQL-запросах.
  • относиться ко всему как к струнам. Это то, что вы делаете, когда заключаете каждое значение между одинарными кавычками. Пожалуйста, всегда используйте правильные типы и обязательно следуйте правильному синтаксису для каждого из них. Использование параметров запроса в любом случае освобождает вас от необходимости помещать в запрос любую цитату.


MadMyche

+5... это решение, которое я бы написал.