Конвертировать JSON дата в vb. net формат даты - PullRequest
0 голосов
/ 22 апреля 2020

Ниже приведен код vb. net, который читает строку json, а затем он копирует в SQL.

. Я получаю сообщение об ошибке, когда он копирует в сервер sql, говоря «Неверные данные». тип "

Проблема с форматом даты столбца (" idt "). Если я не включаю этот столбец в копию SQLBulk, то он успешно вставляет остальные данные в SQL.

    Dim JsonP As JObject = JObject.Parse(decodedString)
            Dim SetPointerOut As JToken = JsonP("b2b")

            Try

                Dim i as Integer = 0
                Dim j as Integer = 0
                For Each itemout as Object In SetPointerOut

                    Dim SetPointerIn As JToken = JsonP("b2b")(i)("inv")
                    For Each itemin as Object In SetPointerIn

                        Dim SetPointerInSub As JToken = JsonP("b2b")(i)("inv")(j)("itms")
                        For Each iteminsub as Object In SetPointerInSub
                            Dim NewDRinsub As DataRow = TempDT.NewRow
                            NewDRinsub("ctin") = itemout("ctin")
                            NewDRinsub("cfs") = itemout("cfs")
                            NewDRinsub("val") = itemin("val")
                            NewDRinsub("inv_typ") = itemin("inv_typ")
                            NewDRinsub("pos") = itemin("pos")
                            NewDRinsub("idt") = itemin("idt") --- **source json has this date in format "dd-mm-yyyy"
                            NewDRinsub("rchrg") = itemin("rchrg")
                            NewDRinsub("inum") = itemin("inum")
                            NewDRinsub("chksum") = itemin("chksum")
                            TempDT.Rows.Add(NewDRinsub)
                       Next
                        j = j + 1
                    Next
                    i += 1
                    j = 0
                Next

    Using sqlBulkCopy As New SqlBulkCopy(Mycon.mConnection, SqlBulkCopyOptions.FireTriggers, Nothing)
                    sqlBulkCopy.DestinationTableName = "GST2_B2B"
                    sqlBulkCopy.ColumnMappings.Add("ctin", "PartyGSTNo")
                    sqlBulkCopy.ColumnMappings.Add("cfs", "CFS")
                    sqlBulkCopy.ColumnMappings.Add("val", "Invoice_Value")
                    sqlBulkCopy.ColumnMappings.Add("inv_typ", "Invoice_Type")
                    sqlBulkCopy.ColumnMappings.Add("pos", "StateCode")
                    sqlBulkCopy.ColumnMappings.Add("idt", "Invoice_Date") --- source json has this date in format "dd-mm-yyyy"
                    sqlBulkCopy.ColumnMappings.Add("rchrg", "ReverseCharge")
                    sqlBulkCopy.ColumnMappings.Add("inum", "Invoice_Number")
                    sqlBulkCopy.ColumnMappings.Add("chksum", "CHKSUM")
                    sqlBulkCopy.ColumnMappings.Add("period", "Period")
                    sqlBulkCopy.BulkCopyTimeout = 120
                    sqlBulkCopy.WriteToServer(TempDT) -- error at this stage
 --- Getting error at this stage, saying "Invalid datatype", and that is because of column sqlBulkCopy.ColumnMappings.Add("idt", "Invoice_Date")
                End Using

, как сказано, если я удаляю sqlBulkCopy.ColumnMappings.Add ("idt", «Invoice_Date»), то работает хорошо. Я думаю, у Bulkcopy есть какая-то проблема с dateformt столбца "idt" в vb. net datatable.

Итак, как мне решить эту проблему с форматированием даты?

как мне преобразовать json дату в формат vb. net в строке кода, отмеченной выше комментарием?

1 Ответ

1 голос
/ 22 апреля 2020

Только для ухмылки сделайте это.

NewDRinsub("idt") = Date.ParseExact(itemin("idt"), "dd-MM-yyyy", CultureInfo.InvariantCulture)

https://docs.microsoft.com/en-us/dotnet/api/system.datetime.parseexact?view=netframework-4.8#System_DateTime_ParseExact_System_String_System_String_System_IFormatProvider_

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...