【问题标题】:Convert JSON date to vb.net date format将 JSON 日期转换为 vb.net 日期格式
【发布时间】:2020-04-22 17:20:20
【问题描述】:

以下是 vb.net 代码,它读取 json 字符串,然后将其批量复制到 SQL。

当它批量复制到 sql server 说“无效数据类型”时,我收到错误

问题在于列的日期格式(“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 对 vb.net 数据表的“idt”列的 dateformt 有一些问题。

那么,我该如何解决这个日期格式问题?

如何在上面标有注释的代码行将 json 日期转换为 vb.net 格式?

【问题讨论】:

    标签: json vb.net


    【解决方案1】:

    【讨论】:

      猜你喜欢
      • 2017-10-12
      • 1970-01-01
      • 1970-01-01
      • 2018-02-12
      • 1970-01-01
      • 2020-01-09
      • 2023-03-30
      • 2011-08-13
      • 1970-01-01
      相关资源
      最近更新 更多