【问题标题】:how to send a table for odbc in vb如何在VB中为odbc发送表格
【发布时间】:2018-03-05 05:08:02
【问题描述】:

我正在尝试在 vb 中为 odbc 发送一个表。数据表参数是 P_DETALLE,但我收到这样的错误:

没有将对象类型 System.Data.DataTable 分配给已知托管提供程序的本机类型

代码是这样的:

Sub ADMINISTRAR_ARTEFACTO(ByVal P As E_ARTEFACTO)
    Dim CONECTION As New OdbcConnection
    Try
        CONECTION.ConnectionString = ConfigurationManager.ConnectionStrings("ALURHE_DBConnectionString_64").ConnectionString + ";pwd=123"
        Dim COMMAND As OdbcCommand = New OdbcCommand("{call SP_ADM_ARTEFACTO (?,?,?,?,?,?,?,?)}", CONECTION)

        With COMMAND

            .Parameters.AddWithValue("V_SERIE", P.P_SERIE)
            .Parameters.AddWithValue("V_TIPO_ARTEFACTO", P.P_TIPO_ARTEFACTO)
            .Parameters.AddWithValue("V_MODELO", P.P_MODELO)
            .Parameters.AddWithValue("V_MARCA", P.P_MARCA)

            .Parameters.AddWithValue("V_DETALLE", P.P_DETALLE)
            .Parameters.AddWithValue("V_USUARIO", P.P_USUARIO)
            .Parameters.AddWithValue("V_ID_ARTEFACTO", If(P.P_TIPO_OPERACION = "M", P.P_ID_ARTEFACTO, DBNull.Value))
            .Parameters.AddWithValue("V_TIPO_OPERACION", P.P_TIPO_OPERACION)


        End With


        'If P.P_TIPO_OPERACION = "M" Then
        '    COMMAND.Parameters.AddWithValue("@ID_PRODUCTO", P.P_ID_PRODUCTO)
        'End If

        CONECTION.Open()
        COMMAND.ExecuteNonQuery()
        CONECTION.Close()

    Catch ex As Exception
        If (CONECTION.State = ConnectionState.Open) Then
            CONECTION.Close()
        End If

        Throw ex
    End Try
End Sub

【问题讨论】:

    标签: vb.net odbc


    【解决方案1】:

    DataTable 不能是 ODBC 提供程序 it is not supported 的命令参数的值。

    如果您指定了SqlDbType.Structured,您可以使用 MSSQL 提供程序来完成。

    您可以做的一件事是将DataTable 中的数据插入到一个临时表中,然后在您的查询/过程中对该表进行连接。

    【讨论】:

    • 如果您的数据表不是太大,只需遍历行并将每一行插入临时表或暂存表。我不知道您的数据,因此无法使用 JOIN 编写查询,但它与您的程序已经拥有的非常相似。
    • 你可以给我一个简单的例子
    • 或者你能告诉我除了 ODBC 之外的其他方法吗?我正在使用带有 vb 的 postgresql
    • Maybe this will help,很难说清楚,因为我不知道你的 DataTable 的结构是什么,也不知道你的程序是什么。
    • Npgsql 支持数据表吗?
    猜你喜欢
    • 2011-08-31
    • 2018-03-30
    • 2020-03-23
    • 2014-01-20
    • 1970-01-01
    • 2020-12-18
    • 2012-11-06
    • 1970-01-01
    • 2016-09-03
    相关资源
    最近更新 更多