none
Enviar list como parametro a sql server

    質問

  • Saludos expertos...

    nuevamente con este problema que no he podido resolver, por ningun medio o porlomenos ninguno simple, y acudo nuevamente a su sabiduria

    Trabajo con c# donde tengo un:

    List <DatosRegistro> ListaDatos = newList<DatosRegistro>();

     

    ahora, como puedo con la clase sqlhelper enviar esta lista como parametro de un SP a sql server 2008

    SqlHelper.ExecuteNonQuery(Conex.cnxString, "[SP_RegistraDatos]", Lista).ToString() 

    Como puedo hacer para enviar un list a sql server, capturar ese list y registrar todos sus elementos?

    Gracias de antemano.

    Como dato extra les comento que en sql server tengo un stored procedure que recibo como parametro un table tal como se muestra en este blog: http://sqldata.blogspot.com/2009/08/mejoras-en-t-sql-de-sql-server-2008-el.html

    que mediante el envio de un DataTable funciona correctamente, pero el envio lo hace con sqlcomand, pero yo trabajo con SqlHelper

    de ahi: 1 enviar un list<> en vez de un DataTable

                2 hacerlo mediante SqlHelper


     

    • 編集済み ivankikes 2012年2月29日 15:17
    2012年2月29日 15:12

回答

  • Hola,

    El proveedor de ADO.Net de Ms Sql Server (System.Data.SqlClient), solo adminite SqlParamaters de valor de tabla representados por objetos como  DataTable, DbDataReader o System.Collections.Generic.IEnumerable<SqlDataRecord>.

    Por lo que respondiendo a la primera pregunta, podrías probar a usar la extensión "ListaDatos.AsDataReader()" que convierte en DataReader un IEnumerable. Así tendrías el tipo de objeto que espera el parámetro para poderlo enviar como tipo tabla.

    Respondiendo a la segunda pregunta, desconozco como es exactamente tu clase SqlHelper, pero si sé que el otro requerimiento para que un SqlParameter sea de tipo tabla, hay que asignarle a su propiedad de tipo, este valor:

    parametro.SqlDbType = SqlDbType.Structured;
    Un saludo,

    Fernanando Escolar - http://www.programandonet.com/ - @fernandoescolar

    • 回答としてマーク ivankikes 2012年3月2日 16:41
    2012年3月2日 8:24