Конвертер DateTime из dataGridView в MsSql

254
31 мая 2017, 02:27

Доброе утро, у меня из бд отображается datagridView, проблема в том что последний столбец является типом datetime и обратно из грида в бд он не парсится кидает exception

Необработанное исключение типа "System.Data.SqlClient.SqlException" в System.Data.dll

Дополнительные сведения: Conversion failed when converting date and/or time from character string.

using (SqlConnection connection = new SqlConnection(connectionStr))
                {
                    connection.Open();
                   foreach (DataGridViewRow row in dataGridView1.Rows)
                    {
                        string sqlExpression = string.Format(
      "Insert into XmlTable (FileVersion, FileName, DateChanged) values ('{0}', '{1}', '{2}')",
               row.Cells[0], row.Cells[1], row.Cells[2];
                        SqlCommand command = new SqlCommand(sqlExpression, connection);
                        command.ExecuteNonQuery();
                    }
                }

в гриде это поле выглядит так 21.12.16 т е через точку пробывал добавить .ToString().Replace('.','-')); не помогло. Ячейка с datetime находится в позиции {2} проверял Эта кнопка последняя все работает сегодня сдаю

Answer 1

Для начала общий ответ: Почитайте про форматы даты и времени в SQL Server в этой статье, вам станет понятно, откуда растут ноги у вашей проблемы:

https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql

Теперь более конкретный ответ:

Если вы хотите импортировать значения именно так, то генерируйте вместо "'{2}'" такую строчку: "convert(date, '''{2}''', 4)" - так вы явно укажете СУБД, в каком формате ваша дата и как ее надо распознавать.

Альтернатива вашему решению - передача полного XML внутрь запроса и парсинг его уже методами T-SQL - этот диалект языка достаточно давно умеет парсить XML.

Answer 2

В datagridView поменяйте формат даты на месяц/день/год",потом при чтении этого поля можете напиать вот так!

string date = "12.28.16";
DateTime dt = Convert.ToDateTime(str);  

В вашем же сличайи Convert.ToDateTime(row.Cells[2])

READ ALSO
Видео плеер своими руками на C#

Видео плеер своими руками на C#

Всем приветХочу попробовать сделать видео плеер, который будет читать следующие форматы: AVI, WMV, MOV, MKV, 3gp и т

475
Как загрузить вторую форму в фоновом режиме?

Как загрузить вторую форму в фоновом режиме?

Как при открытии приложения, загрузить форму Form2 в фоновом режиме, при условии, что сначала загружается FormMain (основная форма, при открытии...

218
Убрать выделение первой ячейки в DataGridView

Убрать выделение первой ячейки в DataGridView

Здравствуйте, нашёл вот такой код для запрета в DataGridView использования символов кроме цифр и запятых

356
Динамически подгружаемая DLL

Динамически подгружаемая DLL

Есть dll написанная на C# которая должна храниться на сервере (что бы пользователи не могли получить её CIL код)Вопрос - как осуществить подключение...

194