Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/12/2008, 12:33
Avatar de Bravenap
Bravenap
 
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 6 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!