Me gustaría saber si se puede insertar unos datos contenidos en una DATATABLE en una base de datos.. Utilizando la instrucción INSET INTO
1 respuesta
Respuesta de darkastaroth
2
2
darkastaroth, tengo lo basico en desarrollo de sistemas informaticos en VB y CSharp
Si se puede, pero teniendo en cuenta la definición de tu tabla en tu Base de Datos y los datos que tienes en tu DataTable, es decir, campos nulos, cadenas de caracteres, numéricos, etc. te pongo un ejemplo y espero me entiendas. Supongamos que tienes una Tabla con estos Campos TablaDatos ID smallint (Autoincrementable) Dato1 varchar(20) Dato2 int y en tu codigo lo que harias seria lo siguiente: (csharp) DataTable DT = new DataTable(); SqlCommand Comand = null; foreach (DataRow Registro in DT.Rows) { string Dato1 = (string)Registro["Dato1"]; int Dato2 = (int)Registro["Dato2"]; string Consulta = String.Empty; Consulta = "INSERT INTO TablaDatos (Dato1,Dato2) VALUES ('" + Dato1 + "'," + (string)Dato2 + ")"; Comand = new SqlCommand(Consulta, new SqlConnection("Cadena de Conexion")); } También debes tener mucho cuidado con los formatos de envío en cuestión a fechas, cadenas de caracteres, si te fijas el ID es autoincrementable por eso no es necesario enviarlo en tu consulta y todo ese tipo de detalles pero en general ahí esta lo que buscas.
Gracias por la respuesta. Pero hago una aclaración, en el ejemplo que tu das solo se hace con un solo registro pero supongamos que existen tres columnas y 100 filas. pero hacer esto sin tener que utilizar un FOR
No, en realidad, el foreach es un proceso de iteración secuencial, es decir, avanza de uno en uno hasta terminar. En el ejemplo que te doy no pongo un numero de filas, lo que hago es declarar el foreach que dice que la variable llamada registro del tipo de dato DataRow, se ira recorriendo en la colección de DataRows del DataTable, es decir, en todos los DataRows que contenga el DataTable de uno en uno. Registro=DT.DataRows[0] Registro=DT.DataRows[1] Registro=DT.DataRows[2] Registro=DT.DataRows[3] Registro=DT.DataRows[4] Y así sucesivamente, el bucle se detendrá cuando no haya más datarows en el datatable. Espero haberme explicado, de no ser así comenta tu duda.
3 comentarios
Ocultar comentarios
Buenos días siguiendo este hilo, tengo un datatable (que es llenado desde un archivo excel), este datatable me retorna unos 20000 registros, hago lo que indicas en el for each extraigo los datos de cada fila/columna y la inserto uno a uno, cuando corre el programa desde mi maquina (IIS Express) inserta todo, cuando subo la aplicación el Servidor Web es donde tengo problemas solo logra insertar 13147 registros, el resto nada. No me muestra error??? no se que pueda estar pasando??? me pueden ayudar??? gracias - Juan Carlos Figueroa Aguilar
Buenos días siguiendo este hilo, tengo un datatable (que es llenado desde un archivo excel), este datatable me retorna unos 20000 registros, hago lo que indicas en el for each extraigo los datos de cada fila/columna y la inserto uno a uno, cuando corre el programa desde mi maquina (IIS Express) inserta todo, cuando subo la aplicación el Servidor Web es donde tengo problemas solo logra insertar 13147 registros, el resto nada. No me muestra error??? no se que pueda estar pasando??? me pueden ayudar??? gracias - Juan Carlos Figueroa Aguilar
Comentario borrado por el autor - Emmanuel Reyes
como puedo hacer para que me comience insertar de la segunda fila en adelante - Emmanuel Reyes