Foros del Web » Programando para Internet » ASPX (.net) »

Inserción múltiple de registros

Estas en el tema de Inserción múltiple de registros en el foro de ASPX (.net) en Foros del Web. Muy buenas. Tema muy tratado pero del que no encuentro una solución satisfactoria. Para .Net Framework 1.1: Teniendo una DataTable con todos los registros que ...
  #1 (permalink)  
Antiguo 15/12/2008, 12:33
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Inserción múltiple de registros

Muy buenas. Tema muy tratado pero del que no encuentro una solución satisfactoria. Para .Net Framework 1.1:

Teniendo una DataTable con todos los registros que quiero insertar en una base de datos SQL Server. Las columnas tienen el mismo nombre en ambos. Con SqlCommand y SqlDataAdapter pero estoy un poco liado:

Código PHP:
DataTable dtGeneral = new DataTable("dtGeneral");
//Se crean las columnas y se insertan todos los registros. 
//Proviene de un DataGrid cargado mediante un archivo XML.
......
......

//Obtenemos un DataTable vacío de la base de datos, 
//que se usará para insertar los registros de la otra tabla y posteriormente
//actualizarlos.

DataTable dt = new DataTable("Noticias");
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM noticias WHERE id = 0";,con);
da.Fill(dt);

//Mediante un bucle, añadimos nuevas filas a la tabla obtenida
//de la base de datos.
foreach (DataRow dr in dtGeneral.Rows)
{
    
DataRow drn dt.NewRow();
    
drn["titulo"] = dr["titulo"];
    
drn["medio"] = dr["medio"];
    
drn["fecha"] = dr["fecha"];
    
drn["enlace"] = dr["enlace"];
    
drn["resumen"] = dr["resumen"];
    
drn["activado"] = dr["activado"];
    
dt.Rows.Add(drn);

¿Y ahora qué?¿Cómo hago para que todos esos nuevos registros se inserten en la base de datos usando una sola conexión con la misma?

¿Van por aquí los tiros?
Código PHP:
string strIns "INSERT INTO noticias" +
    
" (titulo,medio,fecha,enlace,resumen,activado)" +
    
" values (@titulo,@medio,@fecha,@enlace,@resumen,@activado)";
SqlCommand cmdIns = new SqlCommand(strIns,con);
cmdIns.Parameters.Add("@titulo"SqlDbType.NVarChar);
cmdIns.Parameters.Add("@medio"SqlDbType.NVarChar);
cmdIns.Parameters.Add("@fecha"SqlDbType.Date);
cmdIns.Parameters.Add("@enlace"SqlDbType.NVarChar);
cmdIns.Parameters.Add("@resumen"SqlDbType.NVarChar);
cmdIns.Parameters.Add("@activado"SqlDbType.Bit);
da.InsertCommand cmdIns
Gracias y un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #2 (permalink)  
Antiguo 15/12/2008, 12:58
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Inserción múltiple de registros

al ser net 1.1 la limitacion de no poder usar sqlbulkcopy (de net 2.0) es mas que obvia pero puedes optar por usar el BULK INSERT de TSQL cada insert guardarlo en un documento de texto y simplemente usar esa funcionalidad.

Revisa esto

http://technet.microsoft.com/es-es/l.../ms188365.aspx
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #3 (permalink)  
Antiguo 16/12/2008, 03:17
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Respuesta: Inserción múltiple de registros

Gracias por la respuesta. Por eso especifiqué lo del 1.1. Le echaré un vistazo a lo que comentas y os cuento.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:53.