如何在vb中发送odbc表

时间:2018-03-04 17:32:18

标签: vb.net odbc

我试图在vb中发送odbc表。 datatable参数是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

1 个答案:

答案 0 :(得分:0)

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

如果您指定了SqlDbType.Structured,则可以使用MSSQL提供程序执行此操作。

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