La BD que estoy utilizando es MySql (phpAdmin) y como lenguaje de programación es C# en aplicativo Windows Forms.
Les pondre un pequeño codigo donde leo el archivo .txt y tomar los datos e ir insertándolos en el datagridview
Código Javascript:
Ver original
List<string> listaExisten = new List<string>(); listaExisten.Clear(); List<string> FormatoErrorList = new List<string>(); FormatoErrorList.Clear(); // Minimum indica el valor mínimo de la barra. progressBarRegistros.Minimum = 0; // Maximum indica el valor máximo de la barra. progressBarRegistros.Maximum = Countveri; // Value indica desde donde se va a comenzar a llenar la barra, la nuestra iniciara desde cero. progressBarRegistros.Value = 0; // Step indica el paso de la barra, entre más pequeño sea la barra tardará más en cargar. progressBarRegistros.Step = 1; // Iniciar el Label en vacio. this.labelNumeroProgreso.Text = string.Empty; try { StreamReader tr = new StreamReader(this.textBoxDireccionArchivo.Text, Encoding.Default); int oCount = 0; int oContador = 0; while ((TextoPlano = tr.ReadLine()) != null) { split = TextoPlano.Split(new Char[] { ',' }, count); if (split.Length == count) { Regex oRegex0 = new Regex(@"^([0-9]*)$"); Match oMatch0 = oRegex0.Match(split[0]); // Aquí hay mas validaciones con expresiones regulares etc... DsTadable = cDsAdministrador.ConsultaAfiliado(split[5]); if (DsTadable.Tables[0].Rows.Count == 0) { if (oMatch0.Success && oMatch1.Success && etc....) { dataGridGestionArchivo.Rows.Add(split[0], split[1], etc.....); oContador++; } else { string Fila = "fila[" + Convert.ToString(oCount) + "]"; FormatoErrorList.Add(Fila); } } else { string FilaExiste = "fila[" + Convert.ToString(oCount) + "] - " + split[5] + " - " + split[6] + " - " + split[8]; listaExisten.Add(FilaExiste); } } split = null; oCount++; // Esta instrucción avanza la posición actual de la barra. progressBarRegistros.PerformStep(); // Updates the label to show available drive space. this.labelNumeroProgreso.Text = oContador + " Registros Procesados de " + progressBarRegistros.Value; } } catch (Exception ex) { // }
Y este es cuando tomo los datos de el datagridview para la BD:
Código Javascript:
Ver original
listError.Clear(); // Minimum indica el valor mínimo de la barra. progressBarRegistros.Minimum = 0; // Maximum indica el valor máximo de la barra. progressBarRegistros.Maximum = this.dataGridGestionArchivo.RowCount; // Value indica desde donde se va a comenzar a llenar la barra, la nuestra iniciara desde cero. progressBarRegistros.Value = 0; // Step indica el paso de la barra, entre más pequeño sea la barra tardará más en cargar. progressBarRegistros.Step = 1; // Iniciar el Label en vacio. this.labelNumeroProgreso.Text = string.Empty; if (ValorCheck == "MSVAL") { int Count = 0; while (this.dataGridGestionArchivo.Rows.Count != 0) { int i = 0; foreach (DataGridViewRow Row in dataGridGestionArchivo.Rows) { string CodFormUSER = GetRandomNumbers(5); string CodEpsUSER = Convert.ToString(Row.Cells["Entidad"].Value); string TipoDocUSER = Convert.ToString(Row.Cells["TipoDoc"].Value); string IdentificacionUSER = Convert.ToString(Row.Cells["Identificacion"].Value); // etc..... CAddUSER oCAddUSER = new CAddUSER(CodFormUSER, CodEpsUSER, TipoDocUSER, IdentificacionUSER, etc.......); CAdministrador oCAdministradorUSER = new CAdministrador(); if (oCAdministradorUSER.RegistrarUSER(oCAddUSER) == true) { this.dataGridGestionArchivo.Rows.RemoveAt(i); Count++; } else { string CadenaText = CodEpsUSER + "," + TipoDocUSER + "," + IdentificacionUSER + "," + etc.....; listError.Add(CadenaText); this.dataGridGestionArchivo.Rows.RemoveAt(i); } i++; // Esta instrucción avanza la posición actual de la barra. progressBarRegistros.PerformStep(); // Updates the label to show available drive space. this.labelNumeroProgreso.Text = Count + " Registros Ingresados a la Base de Datos de " + progressBarRegistros.Value; } } } else } // etc........ }
Pues yo se que con 1.000 filas el proceso se demorara pero no abra una forma de optimizar estos dos procesos para que sea un poco mas rápido ?