Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Data;
- using System.Data.SqlServerCe;
- using System.IO;
- using System.Text;
- using System.Windows.Forms;
- using System.Threading.Tasks;
- namespace gestorbd
- {
- public class cl_gestor_bd
- {
- SqlCeConnection ligacao;
- SqlCeCommand comando;
- SqlCeDataAdapter adaptador;
- SqlCeDataAdapter adaptador_temp;
- string strConn = "";
- string pasta_bd = @"C:\c#\";
- string bd_password = "123";
- //cria a classe de paremetros de SQL
- public class sqlParametro
- {
- public string parametro { get; set; }
- public object valor { get; set; }
- public sqlParametro(string parametro, object valor)
- {
- this.parametro = parametro;
- this.valor = valor;
- }
- }
- //=============================================
- public cl_gestor_bd()
- { }
- //=============================================
- public void CriasBaseDados(string base_dados, List<string> instrucoes, bool verificar_ficheiro = false)
- {
- #region Criar ficheiro
- //criar uma base de dados nova
- #region Verificação da existencia de ficheiro de base de dados
- if (verificar_ficheiro)
- {
- //execulta a verificação
- if (File.Exists(base_dados))
- {
- 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)
- {
- return;
- }
- else
- {
- //vai apagar o ficheiro existente
- try
- {
- File.Delete(base_dados);
- }
- catch
- {
- MessageBox.Show("Aconteceu um erro ao eliminar a base de dados.");
- return;
- }
- }
- }
- }
- #endregion
- //construção da connectionstring
- StringBuilder str = new StringBuilder();
- str.Append("Data source = ");
- //nome da base de dados
- str.Append(base_dados);
- //verificar se tem password
- if (bd_password != "")
- str.Append("; Password = " + bd_password);
- //criação da base de dados
- SqlCeEngine motor = new SqlCeEngine(str.ToString());
- motor.CreateDatabase();
- #endregion
- MessageBox.Show("Base de dados criada com sucesso");
- //==========================================================
- #region Criação das tabelas
- ligacao = new SqlCeConnection(str.ToString());
- ligacao.Open();
- comando = new SqlCeCommand();
- comando.Connection = ligacao;
- //execula as instruções para criar as tabelas
- str = null;
- foreach (string item in instrucoes)
- {
- if (item.StartsWith("CREATE TABLE"))
- {
- //inicia a construção da query
- str = new StringBuilder();
- str.Append(item);
- }
- else if (item == "FIM")
- {
- //fechar a criação da query e execulta-la
- comando.CommandText = str.ToString();
- comando.ExecuteNonQuery();
- }
- else
- {
- //adicionar as instruções ao stringbuilder
- str.Append(item);
- }
- }
- //fecha o comando e a ligação
- comando.Dispose();
- ligacao.Dispose();
- #endregion
- }
- //=============================================
- public cl_gestor_bd(string base_dados)
- {
- //defifir a connection da ligação
- //strConn = "Data source= " + pasta_bd + base_dados + ".sdf; Password = " + bd_password;
- StringBuilder str = new StringBuilder();
- //Define a base da strConn
- str.Append("Data source = ");
- //se existe pasta definida
- if (pasta_bd != "")
- {
- str.Append(pasta_bd);
- }
- //acrecenta o nome do ficheiro da base de dados
- str.Append(base_dados + ".sdf");
- //adiciona o password se for nescessário
- if (bd_password != "")
- {
- str.Append("; Password = " + bd_password);
- }
- //define finalmente a strConn
- strConn = str.ToString();
- //temp
- ligacao = new SqlCeConnection(strConn);
- ligacao.Open();
- ligacao.Dispose();
- }
- //=============================================
- public DataTable EXE_READER(string query, List<sqlParametro> parametros = null)
- {
- //pesquisar as informações da base de dados
- DataTable dados = new DataTable();
- adaptador = new SqlCeDataAdapter(query, strConn);
- adaptador.SelectCommand.Parameters.Clear();
- //execultar a query
- try
- {
- //insere os parametros na query
- if (parametros != null)
- {
- foreach (sqlParametro p in parametros)
- adaptador.SelectCommand.Parameters.AddWithValue(p.parametro, p.valor);
- }
- adaptador.Fill(dados);
- }
- catch (Exception ex)
- {
- MessageBox.Show("ERRO : " + ex.Message);
- }
- adaptador.Dispose();
- return dados;
- }
- //=================================================================================
- public void EXE_NO_QUERY(string query, List<sqlParametro> parametros = null)
- {
- //execulta queries do tipo INSERT, DELETE, UPDATE, CREATE TABLE, etc.
- ligacao = new SqlCeConnection(strConn);
- ligacao.Open();
- comando = new SqlCeCommand(query, ligacao);
- comando.Parameters.Clear();
- try
- {
- //adição de parametros do comando
- if (parametros != null)
- {
- foreach (sqlParametro p in parametros)
- comando.Parameters.AddWithValue(p.parametro, p.valor);
- }
- //execultar a query
- comando.ExecuteNonQuery();
- }
- catch (Exception ex)
- {
- MessageBox.Show("Error: " + ex.Message);
- }
- comando.Dispose();
- ligacao.Dispose();
- }
- //====================================================================================
- public int ID_DISPONIVEL(string tabela, string coluna)
- {
- //devolve o ID disponivel para o proximo registro
- int idtemp = -1;
- string query = "SELECT MAX("+ coluna+") AS MaxID FROM " + tabela;
- DataTable dados = new DataTable();
- adaptador = new SqlCeDataAdapter(query, strConn);
- adaptador.Fill(dados);
- //verifica se é DBNULL ou não,se não adiciona +1
- if (dados.Rows.Count != 0)
- {
- if (DBNull.Value.Equals(dados.Rows[0][0]))
- idtemp = 0;
- else
- idtemp = Convert.ToInt16(dados.Rows[0][0]) + 1;
- }
- return idtemp;
- }
- //====================================================================================
- //1 º preparar um datatable
- public DataTable PREPARAR_DATATABLE(string query)
- {
- //vai preparar a datatable para atualização ou inserção de dados
- adaptador_temp = new SqlCeDataAdapter(query, strConn);
- DataTable dados = new DataTable();
- try
- {
- adaptador_temp.Fill(dados);
- }
- catch (Exception ex)
- {
- MessageBox.Show("ERRO: " + ex.Message);
- }
- return dados;
- }
- //====================================================================================
- //2 º atualizar a base de dados com os novos dados
- public void GRAVAR_DATATABLE(DataTable dados)
- {
- //atualizar a informação na base de dados
- SqlCeCommandBuilder cmd = new SqlCeCommandBuilder(adaptador_temp);
- adaptador_temp.UpdateCommand = cmd.GetUpdateCommand();
- try
- {
- adaptador_temp.Update(dados);
- }
- catch (Exception ex)
- {
- MessageBox.Show("ERRO: " + ex.Message);
- }
- adaptador_temp.Dispose();
- }
- //====================================================================================
- public bool COMPACTAR_BASE_DADOS()
- {
- //compacta a base de dados
- bool concluido = false;
- try
- {
- SqlCeEngine motor = new SqlCeEngine();
- motor.LocalConnectionString = strConn;
- motor.Compact(strConn);
- concluido = true;
- }
- catch (Exception ex)
- {
- concluido = false;
- MessageBox.Show("ERRO: " + ex.Message);
- }
- return concluido;
- }
- }
- }
Add Comment
Please, Sign In to add comment