private void ConsultaSQL_Click(object sender, EventArgs e) { if (!string.IsNullOrEmpty(this.textBoxSQL.Text)) { try { string[] sentencia; sentencia = this.textBoxSQL.Text.Split(' '); sentencia = MetodosAuxiliares.LimpiaSentencia(sentencia); if (sentencia.Contains("select")) { int i; if (sentencia.First().Equals("select")) { Entidad entidad; List <Registro> registros; List <Atributo> atributos; entidad = null; if (!sentencia.Contains("inner")) { atributos = this.consultaAtributosSelect(sentencia, ref entidad); if (entidad.Atributos.Count != 0) { if (entidad.Registros.Count != 0) { if (!sentencia.Contains("where")) { registros = entidad.Valores; this.actualizaDataGridSQLConSelect(entidad, atributos, registros, false); } else { string[] where; i = Array.IndexOf(sentencia, "where"); i++; if (i != sentencia.Length) { where = MetodosAuxiliares.SubArray(sentencia, i, sentencia.Length - i); registros = this.consultaRegistrosSelectWhere(atributos, entidad, where); this.actualizaDataGridSQLConSelect(entidad, atributos, registros, false); } else { throw new InvalidConsultException("Por favor ponga el enunciado de la sentencia where"); } } } else { throw new InvalidConsultException("La entidad a consultar no tiene registros para consultar"); } } else { throw new InvalidConsultException("La entidad a consultar no tiene atributos para consultar"); } } else if (sentencia.Contains("inner") && sentencia.Contains("join") && sentencia.Contains("on") && !sentencia.Contains("where")) { entidad = this.innerJoin(sentencia); atributos = this.consultaAtributosSelectInnerJoin(sentencia, entidad); if (entidad.Registros.Count > 0) { if (!sentencia.Contains("and")) { registros = entidad.Valores; this.actualizaDataGridSQLConSelect(entidad, atributos, registros, true); } else { string[] and; i = Array.IndexOf(sentencia, "and"); i++; if (i != sentencia.Length) { and = MetodosAuxiliares.SubArray(sentencia, i, sentencia.Length - i); registros = this.consultaRegistrosSelectAnd(atributos, entidad, and); this.actualizaDataGridSQLConSelect(entidad, atributos, registros, false); } else { throw new InvalidConsultException("Por favor ponga el enunciado de la sentencia where"); } } } } else { throw new InvalidConsultException("El formato de la consulta no es valido por favor revise la sentencia"); } } else { throw new InvalidConsultException("El select debe ir al principio de la sentencia"); } } else { throw new InvalidConsultException("Formato de consulta no valido no contiene un select :("); } } catch (InvalidConsultException e1) { MessageBox.Show(e1.Message, "Consulta Invalida"); } catch (NotImplementedException e2) { MessageBox.Show(e2.Message, "Aun no implementado"); } } else { MessageBox.Show("La cadena no puede estar vacia"); } }