Flavio1234

gestorbd_classe

Sep 12th, 2020 (edited)
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 10.10 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Data;
  5. using System.Data.SqlServerCe;
  6. using System.IO;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.Threading.Tasks;
  10.  
  11. namespace gestorbd
  12. {
  13.     public class cl_gestor_bd
  14.     {
  15.         SqlCeConnection ligacao;
  16.         SqlCeCommand comando;
  17.         SqlCeDataAdapter adaptador;
  18.  
  19.         SqlCeDataAdapter adaptador_temp;
  20.  
  21.         string strConn = "";
  22.         string pasta_bd = @"C:\c#\";
  23.         string bd_password = "123";
  24.  
  25.  
  26.         //cria a classe de paremetros de SQL
  27.         public class sqlParametro
  28.         {
  29.             public string parametro { get; set; }
  30.             public object valor { get; set; }
  31.  
  32.             public sqlParametro(string parametro, object valor)
  33.             {
  34.                 this.parametro = parametro;
  35.                 this.valor = valor;
  36.             }
  37.         }
  38.  
  39.  
  40.  
  41.         //=============================================
  42.         public cl_gestor_bd()
  43.         { }
  44.  
  45.         //=============================================
  46.  
  47.         public void CriasBaseDados(string base_dados, List<string> instrucoes, bool verificar_ficheiro = false)
  48.         {
  49.  
  50.             #region Criar ficheiro
  51.             //criar uma base de dados nova
  52.             #region Verificação da existencia de ficheiro de base de dados
  53.             if (verificar_ficheiro)
  54.             {
  55.                 //execulta a verificação
  56.                 if (File.Exists(base_dados))
  57.                 {
  58.                     if (MessageBox.Show("Existe uma base de dados com o mesmo nome ." + Environment.NewLine + "Deseja substituir a base de dados existente?", "ATENÇÃO", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No)
  59.                     {
  60.                         return;
  61.                     }
  62.                     else
  63.                     {
  64.                         //vai apagar o ficheiro existente
  65.                         try
  66.                         {
  67.                             File.Delete(base_dados);
  68.                         }
  69.                         catch
  70.                         {
  71.  
  72.                             MessageBox.Show("Aconteceu um erro ao eliminar a base de dados.");
  73.                             return;
  74.                         }
  75.                     }
  76.                 }
  77.             }
  78.  
  79.             #endregion
  80.  
  81.             //construção da connectionstring
  82.             StringBuilder str = new StringBuilder();
  83.             str.Append("Data source = ");
  84.  
  85.  
  86.             //nome da base de dados
  87.             str.Append(base_dados);
  88.  
  89.             //verificar se tem password
  90.             if (bd_password != "")
  91.                 str.Append("; Password = " + bd_password);
  92.  
  93.             //criação da base de dados
  94.             SqlCeEngine motor = new SqlCeEngine(str.ToString());
  95.             motor.CreateDatabase();
  96.  
  97.             #endregion
  98.  
  99.             MessageBox.Show("Base de dados criada com sucesso");
  100.  
  101.             //==========================================================
  102.             #region Criação das tabelas
  103.  
  104.             ligacao = new SqlCeConnection(str.ToString());
  105.             ligacao.Open();
  106.             comando = new SqlCeCommand();
  107.             comando.Connection = ligacao;
  108.  
  109.  
  110.             //execula as instruções para criar as tabelas
  111.             str = null;
  112.             foreach (string item in instrucoes)
  113.             {
  114.                 if (item.StartsWith("CREATE TABLE"))
  115.                 {
  116.                     //inicia a construção da query
  117.                     str = new StringBuilder();
  118.                     str.Append(item);
  119.                 }
  120.                 else if (item == "FIM")
  121.                 {
  122.                     //fechar a criação da query e execulta-la
  123.                     comando.CommandText = str.ToString();
  124.                     comando.ExecuteNonQuery();
  125.                 }
  126.                 else
  127.                 {
  128.                     //adicionar as instruções ao stringbuilder
  129.                     str.Append(item);
  130.                 }
  131.             }
  132.             //fecha o comando e a ligação
  133.             comando.Dispose();
  134.             ligacao.Dispose();
  135.             #endregion
  136.  
  137.         }
  138.  
  139.         //=============================================
  140.         public cl_gestor_bd(string base_dados)
  141.         {
  142.             //defifir a connection da ligação
  143.             //strConn = "Data source= " + pasta_bd + base_dados + ".sdf; Password = " + bd_password;
  144.             StringBuilder str = new StringBuilder();
  145.  
  146.             //Define a base da strConn
  147.             str.Append("Data source = ");
  148.  
  149.             //se existe pasta definida
  150.             if (pasta_bd != "")
  151.             {
  152.                 str.Append(pasta_bd);
  153.             }
  154.  
  155.             //acrecenta o nome do ficheiro da base de dados
  156.             str.Append(base_dados + ".sdf");
  157.  
  158.             //adiciona o password se for nescessário
  159.  
  160.             if (bd_password != "")
  161.             {
  162.                 str.Append("; Password = " + bd_password);
  163.             }
  164.  
  165.             //define finalmente a strConn
  166.             strConn = str.ToString();
  167.  
  168.             //temp
  169.             ligacao = new SqlCeConnection(strConn);
  170.             ligacao.Open();
  171.             ligacao.Dispose();
  172.  
  173.  
  174.         }
  175.  
  176.         //=============================================
  177.  
  178.         public DataTable EXE_READER(string query, List<sqlParametro> parametros = null)
  179.         {
  180.             //pesquisar as informações da base de dados
  181.             DataTable dados = new DataTable();
  182.             adaptador = new SqlCeDataAdapter(query, strConn);
  183.             adaptador.SelectCommand.Parameters.Clear();
  184.  
  185.             //execultar a query
  186.             try
  187.             {
  188.                 //insere os parametros na query
  189.  
  190.                 if (parametros != null)
  191.                 {
  192.                     foreach (sqlParametro p in parametros)
  193.                         adaptador.SelectCommand.Parameters.AddWithValue(p.parametro, p.valor);
  194.                 }
  195.  
  196.  
  197.                 adaptador.Fill(dados);
  198.             }
  199.             catch (Exception ex)
  200.             {
  201.  
  202.                 MessageBox.Show("ERRO : " + ex.Message);
  203.             }
  204.  
  205.  
  206.             adaptador.Dispose();
  207.             return dados;
  208.         }
  209.  
  210.         //=================================================================================
  211.         public void EXE_NO_QUERY(string query, List<sqlParametro> parametros = null)
  212.         {
  213.             //execulta queries do tipo INSERT, DELETE, UPDATE, CREATE TABLE, etc.
  214.             ligacao = new SqlCeConnection(strConn);
  215.             ligacao.Open();
  216.             comando = new SqlCeCommand(query, ligacao);
  217.             comando.Parameters.Clear();
  218.  
  219.             try
  220.             {
  221.                 //adição de parametros do comando
  222.                 if (parametros != null)
  223.                 {
  224.                     foreach (sqlParametro p in parametros)
  225.                         comando.Parameters.AddWithValue(p.parametro, p.valor);
  226.                 }
  227.  
  228.                 //execultar a query
  229.                 comando.ExecuteNonQuery();
  230.             }
  231.             catch (Exception ex)
  232.             {
  233.  
  234.                 MessageBox.Show("Error: " + ex.Message);
  235.             }
  236.             comando.Dispose();
  237.             ligacao.Dispose();
  238.         }
  239.  
  240.         //====================================================================================
  241.  
  242.         public int ID_DISPONIVEL(string tabela, string coluna)
  243.         {
  244.             //devolve o ID disponivel para o proximo registro
  245.             int idtemp = -1;
  246.  
  247.             string query = "SELECT MAX("+ coluna+") AS MaxID FROM " + tabela;
  248.  
  249.             DataTable dados = new DataTable();
  250.             adaptador = new SqlCeDataAdapter(query, strConn);
  251.             adaptador.Fill(dados);
  252.  
  253.             //verifica se é DBNULL ou não,se não adiciona +1
  254.             if (dados.Rows.Count != 0)
  255.             {
  256.                 if (DBNull.Value.Equals(dados.Rows[0][0]))
  257.                     idtemp = 0;
  258.                 else
  259.  
  260.                   idtemp = Convert.ToInt16(dados.Rows[0][0]) + 1;
  261.                
  262.             }
  263.  
  264.             return idtemp;
  265.         }
  266.  
  267.         //====================================================================================
  268.         //1 º preparar um datatable
  269.  
  270.         public DataTable PREPARAR_DATATABLE(string query)
  271.         {
  272.             //vai preparar a datatable para atualização ou inserção de dados
  273.             adaptador_temp = new SqlCeDataAdapter(query, strConn);
  274.             DataTable dados = new DataTable();
  275.  
  276.             try
  277.             {
  278.                 adaptador_temp.Fill(dados);
  279.             }
  280.             catch (Exception ex)
  281.             {
  282.  
  283.                 MessageBox.Show("ERRO: " + ex.Message);
  284.             }
  285.  
  286.             return dados;
  287.         }
  288.  
  289.         //====================================================================================
  290.         //2 º atualizar a base de dados com os novos dados
  291.         public void GRAVAR_DATATABLE(DataTable dados)
  292.         {
  293.             //atualizar a informação na base de dados
  294.             SqlCeCommandBuilder cmd = new SqlCeCommandBuilder(adaptador_temp);
  295.             adaptador_temp.UpdateCommand = cmd.GetUpdateCommand();
  296.  
  297.             try
  298.             {
  299.                 adaptador_temp.Update(dados);
  300.             }
  301.             catch (Exception ex)
  302.             {
  303.  
  304.                 MessageBox.Show("ERRO: " + ex.Message);
  305.             }
  306.  
  307.             adaptador_temp.Dispose();
  308.  
  309.            
  310.         }
  311.  
  312.         //====================================================================================
  313.  
  314.         public bool COMPACTAR_BASE_DADOS()
  315.         {
  316.             //compacta a base de dados
  317.             bool concluido = false;
  318.  
  319.             try
  320.             {
  321.                 SqlCeEngine motor = new SqlCeEngine();
  322.                 motor.LocalConnectionString = strConn;
  323.                 motor.Compact(strConn);
  324.                 concluido = true;
  325.             }
  326.             catch (Exception ex)
  327.             {
  328.                 concluido = false;
  329.                 MessageBox.Show("ERRO: " + ex.Message);
  330.             }
  331.  
  332.             return concluido;
  333.  
  334.         }
  335.  
  336.     }
  337. }
Add Comment
Please, Sign In to add comment