Insertar un DATATABLE en una base de datos

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
2
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.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas