我试图在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
答案 0 :(得分:0)
DataTable
不能是ODBC提供程序it is not supported的命令参数的值。
如果您指定了SqlDbType.Structured
,则可以使用MSSQL提供程序执行此操作。
您可以做的一件事是将数据从DataTable
插入到临时表中,然后在查询/过程中对该表进行连接。