Deste modo comecei um projecto, BaseDados, que consiste numa biblioteca para acesso, de forma muito facil, a alguns tipos de BDs mais comuns.
Neste momento, e apesar de ainda estar em desenvolvimento, já suporta:
- Access (incluindo a versão 2007)
- MySQL
- Microsoft SQL Server
- Qualquer ligação por OLEDB
e é compativel com a versão 2.0 da FrameWork .NET. Faço ainda intenções de implementar mais alguns tipos diferentes de acesso a BDs, como por exemplo, Oracle.
Modo de funcionamento.
Depois de adicionar a referencia para a biblioteca (apenas o ficheiro BaseDados.dll):
teremos que dizer que tipo de BD nos queremos ligar.
Para isso, talvez o mais correcto, seja na função main() do programa acrescentar:
using BaseDadosLib;
public class Main
{
public void main() {
MySQL.setInstance("127.0.0.1", "bd", "user_name", "password");
}
}
Desta forma definimos a nossa ligação a uma BD em MySQL; Agora sempre que necessário aceder à BD:
using BaseDadosLib;
public class MyClass {
BaseDados bd = MySQL.getInstance();
private void my_func() {
textBox1.Text = bd.SQLString("SELECT campo1 FROM tabela1");
}
}
Funções.
A biblioteca está, como referido anteriormente, dividida em:
- BaseDadosLib.MSSQL
- BaseDadosLib.MySQL
- BaseDadosLib.ACCESS
- BaseDadosLib.OleDB
- int SQLNonQuery(string sql)
Executa uma instrução na BD e retorna o número de linhas afectadas (ex.: UPDATE, DELETE, INSERT)
- string SQLString(string sql)
Devolve a primeira string de dados obtida da consulta
- string[] SQLStringArray(string sql)
Devolve um array de strings da consulta obtida à BD
- string[,] SQLStringMatrix(string sql)
Devolve um array bidimensional com os dados obtidos
- DataTable SQLTable(string sql)
Devolve uma DataTable com os dados obtidos da BD
Tecnologias
Esta biblioteca é baseada em singleton. Um singleton é um objecto criado estaticamente, assim, por mais objectos que se criem, todos estes apontarão para o mesmo objecto.
De uma forma mais simples:
ao criar um objecto, Form xpto = new Form(), este é guardado na memória do computador ocupando determinada memória; ao voltar a criar outro Form com a instrução anterior, é outra vez guardado na memória e assim ocupará mais memória.
O singleton apenas ocupa memória uma vez, pois todos os objectos do mesmo tipo que se criem correspondem ao mesmo objecto.
Daqui se tira logo uma enorme vantagem deste método:
para se trabalhar sobre uma BD não necessitamos de estar constantemente a criar objectos novos para fazer novas ligações, isto acontece por exemplo quando num Form acedem à BD e noutro Form voltam a aceder à mesma BD pois têm que declarar em cada Form um objecto para tal.
Assim, apenas com um único objecto e uma única ligação podem trabalhar em qualquer Form com a vossa BD sem estar a desperdiçar memória por cada novo acesso.
Dicas
Se em determinada class for necessário mais que uma vez o acesso a uma BD, o objecto do tipo BaseDados deve ser declarado como global à mesma class, ou seja, declarar globalmente para assim poder ser visível a todas as funções dessa class evitando a declaração excessiva de variáveis.
Problemas
Poderá ocorrer um erro a quem use sistemas operativos de 64 bits, a estes, devem ir às opções do projecto, e escolher a plataforma x86, como mostra a imagem abaixo para a configuração "All Configurations".

Download
Podes fazer o download da biblioteca aqui (15-01-10)