从数据表中填写数据库

Hui Liu-MSFT 46,961 信誉分 Microsoft 供应商
2024-03-26T08:36:47.1+00:00

你好

我从excel文件导入了数据。该文件不包含指定的列,但可变,最多有 5 列。但它可以是 3 列或 2 到 5 列。这五列都有名称,但列的位置和重音会根据文件而变化。我想要的是将数据从 DataTable 传输到数据库。传输是根据列名和所需值(如果列名在其中)到数据库的比较。如果列名不存在,则采用“-”符号并将其保存在数据库中

块引用


Dim parta, partb, partc, partd As String
Dim i As Integer = 0
For i = 0 To dt2.Rows.Count - 1
If dt2 Is Nothing Then
Exit For : Exit Sub


                        End If

                        If (dt2.Rows(0)("cola").ToString = "cola") Then

                            parta = dt2.Rows(i)("cola")

                        End If


                        If (dt2.Rows(0)("colb").ToString = "colb") Then

                            partb = dt2.Rows(i)("colb")

                        End If

                        If (dt2.Rows(0)("colc").ToString = "colc") Then

                            partc = dt2.Rows(i)("colc")

                        End If

                        If (dt2.Rows(0)("cold").ToString = "cold") Then

                            partd = dt2.Rows(i)("cold")

                        End If
                        Dim com As New OleDbCommand("INSERT INTO EXPORT_TB(EXPORT_a,EXPORT_b,EXPORT_c,EXPORT_d) VALUES (@EXPORT_a,@EXPORT_b,@EXPORT_c,@EXPORT_d)", con)

                        com.Parameters.AddWithValue("@EXPORT_a", OleDbType.VarChar).Value = parta
                        com.Parameters.AddWithValue("@EXPORT_b", OleDbType.VarChar).Value = partb
                        com.Parameters.AddWithValue("@EXPORT_c", OleDbType.VarChar).Value = partc
                        com.Parameters.AddWithValue("@EXPORT_d", OleDbType.VarChar).Value = partd

                        con.Open()
                        com.ExecuteNonQuery()
                        con.Close()

                    Next

Note:此问题总结整理于:Fill in the database from datatable

VB
VB
Microsoft 开发的一种面向对象的编程语言,其在 .NET Framework 上实现。 以前称为 Visual Basic .NET。
84 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Jiale Xue - MSFT 41,271 信誉分 Microsoft 供应商
    2024-03-26T08:57:47.8233333+00:00

    首先,您需要创建一个包含五列的模板表。例如:

            Dim dt As DataTable = New DataTable  
            dt.Columns.Add("cola")  
            dt.Columns.Add("colb")  
            dt.Columns.Add("colc")  
            dt.Columns.Add("cold")  
            dt.Columns.Add("cole")  
    

    然后将您的“dt2”合并到表中。

            dt.Merge(dt2)  
    

    最后,您可以参考以下代码将数据表保存到数据库中。

            Dim cmd As New OleDbCommand("INSERT INTO EXPORT_TB(EXPORT_a,EXPORT_b,EXPORT_c,EXPORT_d,EXPORT_e) VALUES (@EXPORT_a,@EXPORT_b,@EXPORT_c,@EXPORT_d,@EXPORT_e)", con)  
            con.Open()  
            For Each row As DataRow In dt.Rows  
                cmd.Parameters.Clear()  
                cmd.Parameters.AddWithValue("EXPORT_a", IIf(row("cola").ToString() = "", "-", row("cola").ToString()))  
                cmd.Parameters.AddWithValue("EXPORT_b", IIf(row("colb").ToString() = "", "-", row("colb").ToString()))  
                cmd.Parameters.AddWithValue("EXPORT_c", IIf(row("colc").ToString() = "", "-", row("colc").ToString()))  
                cmd.Parameters.AddWithValue("EXPORT_d", IIf(row("cold").ToString() = "", "-", row("cold").ToString()))  
                cmd.Parameters.AddWithValue("EXPORT_e", IIf(row("cole").ToString() = "", "-", row("cole").ToString()))  
                cmd.ExecuteNonQuery()  
            Next  
            con.Close()  
    

    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。

    注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助