static void TestandoConexao(object sender, DoWorkEventArgs e) { ControladorBD cBD = new ControladorBD(); ErroTeste = cBD.TestarConexao(); if (ErroTeste != null) EstadoTesteCon = TesteConexao.TestouRetornouErro; else EstadoTesteCon = TesteConexao.Testou; }
public static EsquemaTabela[] PegarEsquemaTabelasColunas() { EsquemaTabela[] esquemaTabelas; System.Data.DataTable tabEsquemaColunas; CampoBD[] camposTabela; ControladorBD cBD = new ControladorBD(); //Pega o esquema das tabelas no BD System.Data.DataTable tabEsquemaTabelas = cBD.PegarEsquemaTabelas(); esquemaTabelas = new EsquemaTabela[tabEsquemaTabelas.Rows.Count]; //Laço para pegar o esquema de cada tabela for (int i = 0; i < tabEsquemaTabelas.Rows.Count; i++) { //Define a tabela atual esquemaTabelas[i] = new EsquemaTabela(tabEsquemaTabelas.Rows[i][2].ToString()); //Pega as colunas tabEsquemaColunas = cBD.PegarEsquemaColunas(esquemaTabelas[i].NomeTabela); camposTabela = new CampoBD[tabEsquemaColunas.Rows.Count]; //Laço para definir cada coluna for (int j = 0; j < tabEsquemaColunas.Rows.Count; j++) { string nome = tabEsquemaColunas.Rows[j][3].ToString(); bool permiteNulo; if (tabEsquemaColunas.Rows[j][6].ToString() == "NO") permiteNulo = false; else { permiteNulo = true; } //Define os tipos System.Data.SqlDbType tipoBD = (System.Data.SqlDbType)Enum.Parse(typeof(System.Data.SqlDbType), tabEsquemaColunas.Rows[j][7].ToString(), true); Type tipo = PegarTipoColuna(tipoBD); //Define a quantidade de linhas int maxLenght = 0; if (tabEsquemaColunas.Rows[j][8].GetType() == typeof(int)) maxLenght = (int)tabEsquemaColunas.Rows[j][8]; camposTabela[j] = new CampoBD( i, nome, permiteNulo, tipoBD, tipo, maxLenght, TipoCampo.Comum ); } esquemaTabelas[i].Campos = camposTabela; } return esquemaTabelas; }
/// <summary> /// Pega as relações de uma tabela e já as define em um esquema de tabela /// </summary> /// <param name="esquema">O esquema da tabela</param> public static void PegarColunasPkEUnique(EsquemaTabela[] esquemas) { ControladorBD cBD = new ControladorBD(); System.Data.DataTable tbPkEUnique = cBD.LerT( @"SELECT i1.TABLE_NAME, i2.COLUMN_NAME, i1.CONSTRAINT_TYPE FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1 INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2 ON i1.CONSTRAINT_NAME = i2.CONSTRAINT_NAME"); DataView view = tbPkEUnique.DefaultView; for (int i = 0; i < esquemas.Length; i++) { view.RowFilter = "TABLE_NAME = '" + esquemas[i].NomeTabela + "'"; ConfigurarPkEUnique(view, esquemas[i]); } }
/// <summary> /// Pega as relações de uma tabela e já as define em um esquema de tabela /// </summary> /// <param name="esquema">O esquema da tabela</param> public static RelacaoBD[] PegarRelacoes(EsquemaTabela[] esquemas) { ControladorBD cBD = new ControladorBD(); System.Data.DataTable tbRelacoes = cBD.LerT(@"SELECT K_Table = FK.TABLE_NAME, FK_Column = CU.COLUMN_NAME, PK_Table = PK.TABLE_NAME, PK_Column = PT.COLUMN_NAME, Constraint_Name = C.CONSTRAINT_NAME FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME INNER JOIN ( SELECT i1.TABLE_NAME, i2.COLUMN_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1 INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2 ON i1.CONSTRAINT_NAME = i2.CONSTRAINT_NAME WHERE i1.CONSTRAINT_TYPE = 'PRIMARY KEY' ) PT ON PT.TABLE_NAME = PK.TABLE_NAME"); RelacaoBD[] relacoes = new RelacaoBD[tbRelacoes.Rows.Count]; for (int i = 0; i < relacoes.Length; i++) { relacoes[i] = new RelacaoBD( (string)tbRelacoes.Rows[i][0], (string)tbRelacoes.Rows[i][1], (string)tbRelacoes.Rows[i][2], (string)tbRelacoes.Rows[i][3], (string)tbRelacoes.Rows[i][4]); } return relacoes; }