private void execucaoComandoReal() { string id; if (operacao != acao.InserirDados && anterior == acao.InserirDados) { //Base.getInstance().naoEhInsert(); memoria.salvarMetadados(); } switch (operacao) { case acao.Nada: //throw new SGDBException("Que ação é essa? Favor incluir um comando válido."); break; case acao.CriarTabela: metadados.criarIndiciePrimary(); memoria.salvarMetadados(metadados); memoria.recuperarMetadados(); break; case acao.InserirDados: id = identificadores[0]; identificadores.RemoveAt(0); RegistroTabela registro = new RegistroTabela(-1); metadados = memoria.recuperarMetadados(id); if (allColunas) { DadoTabela DadoTabela; for (int i = 0; i < identificadores.Count; i++) { if (identificadores[i].Equals("null")) { DadoTabela = new DadoTabela(metadados.getNomesColunas()[i], metadados.getTipoDado(i), (byte)metadados.getDados()[metadados.getNomesColunas()[i]].getTamanho(), false, identificadores[i].Replace("\'", "")); } else { DadoTabela = new DadoTabela(metadados.getNomesColunas()[i], metadados.getTipoDado(i), (byte)metadados.getDados()[metadados.getNomesColunas()[i]].getTamanho(), true, identificadores[i].Replace("\'", "")); } registro.dados.Add(DadoTabela); } } else { DadoTabela dado = null; bool nacho = true; for (int i = 0; i < metadados.getNomesColunas().Count; i++) { nacho = true; for (int j = 0; j < contColunas && nacho; j++) { if (metadados.getNomesColunas()[i].Equals(identificadores[j])) { if (identificadores[j + contColunas].Equals("null")) { dado = new DadoTabela(metadados.getNomesColunas()[i], metadados.getTipoDado(i), (byte)metadados.getDados()[metadados.getNomesColunas()[i]].getTamanho(), false, identificadores[j + contColunas].Replace("\'", "")); } else { dado = new DadoTabela(metadados.getNomesColunas()[i], metadados.getTipoDado(i), (byte)metadados.getDados()[metadados.getNomesColunas()[i]].getTamanho(), true, identificadores[j + contColunas].Replace("\'", "")); } nacho = false; } } if (nacho) { dado = new DadoTabela(metadados.getNomesColunas()[i], metadados.getTipoDado(i), (byte)metadados.getDados()[metadados.getNomesColunas()[i]].getTamanho(), false, "null"); } registro.dados.Add(dado); } } // Console.WriteLine("TO STRING DA TABELA"); /*TabelaDado tabelaDado = new TabelaDado(id, memoria.getPath()); * tabelaDado.Registros.Add(RegistroTabela);*/ // Form1.addMensagem(tabelaDado.ToString()); //arquivoBinario = new ArquivoTabela(memoria.getPath()+"\\"+metadados.getNome()+".dat"); //long posi = arquivoBinario.insert(registro); Base.getInstance().insert(metadados.getNome(), registro); metadados.incRegistrosTabela(); //metadados.addIndice(registro, posi, memoria.getPath()); //memoria.salvarMetadados(metadados); memoria.atualizar(); break; case acao.Select: Form1.addMensagem(select.ToString()); Form1.setResultado(select.run(), select.Retorno); select.clear(); break; case acao.CriarIndex: id = identificadores[0]; identificadores.RemoveAt(0); foreach (string item in identificadores) { if (!metadados.getDados().ContainsKey(item)) { new SemanticError("A coluna " + item + "não existe na tabela " + metadados.getNome()); } } metadados.criarIndice(id, identificadores.ToArray()); memoria.salvarMetadados(metadados); memoria.atualizar(); break; case acao.ExcluirIndex: memoria.dropIndex(identificadores[0]); memoria.salvarMetadados(); memoria.atualizar(); break; default: throw new SGDBException("Ação Real" + operacao + " não implementada."); } anterior = operacao; //Console.WriteLine(metadados.StringIndices()); }