• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

inginheiiro

Acesso a BD (MySQL, Access,SQL Server 2000/2005) simplificado

13 mensagens neste tópico

boas.

A pedido de alguns elementos desenvolvi uma pequena API em .NET 1.1 para simplificar a conexão a BD mysql, access ou Sql Server 2000/2005.

a API encontra-se disponivel através do link http://bragatel.pt/coredump/EasyDb.zip.

Pode ser usada por todos aqueles que usarem C#,VB.NEt, Python.NET, Java.net, perl.net.

Como conectar a uma BD Sql Server.

DBWrapper c = new DBWrapper(EasyDb.DatabaseType.MSSQL);
c.DBServer="10.0.2.32\\Instancia-1";
c.DBUser="sa";			
c.DBPassword="";
c.Connect("bdsophis");

Como conectar a uma BD access

DBWrapper c = new DBWrapper(EasyDb.DatabaseType.Access);
c.DBUser="Admin";			
c.Connect(@"c:\temp\Northwind.mdb");

Como conectar a uma BD Mysql

DBWrapper c = new DBWrapper(EasyDb.DatabaseType.Mysql);
c.DBServer="10.0.2.32";
c.DBUser="root";			
c.DBPassword="mypwd";
c.Connect("o-comerce");

Como Executar scripts em massa em Mysql, e retornar os dados todos num DataSet

DataSet ds =null;
try{
  DataSet ds = c.dbExec_n_Queries("select * from customers; select * from users;");
}
catch(Exception e){
Console.WriteLine(e.StackTrace);
ds=null;
}

Como Executar scripts em massa em Access/Sql Server, e retornar os dados todos num DataSet

DataSet ds =null;
try{
  DataSet ds = c.dbExec_n_Queries("select * from customers; go  select * from users;");
}
catch(Exception e){
Console.WriteLine(e.StackTrace);
ds=null;
}

Como Executar uma query (Mysql,Access,Sql Server) e retornar os dados num objecto

DBResult dbr = c.dbExecQuery("select * from employees");		
DBRow _row = null;			
while ((_row = dbr.FetchAsArray())!=null)						
Console.WriteLine("Nome: " + _row["firstName"]+ " Apelido "+ _row["lastName"]);}

Como fazer um Insert numa tabela (Mysql,Access,Sql Server)

DBRow R = new DBRow() ;
R["employeeId"]=3;
R["firstname"]="Jaimao";
R["lastname"]="Da Silva";
R["title"]="mr";
R["emailname"]="a@a.com";
c.dbInsert("employees",R);

Como executar um Stored Procedure (Mysql,Access,Sql Server)

using(DBWrapper cc = new DBWrapper(EasyDb.DatabaseType.MSSQL)){
cc.DBServer="10.0.2.32\\sql2000";
cc.DBUser="sa";			
cc.DBPassword="";
cc.Connect("bdinfra");
try{					
  DBRow _r = new DBRow() ;
_r["chave"]="111111111";
_r["data"]="2006-10-02";
_r["anolectivo"]="2006";
_r["cddoc"]="1352";					
DBResult dbxr =cc.dbStoredProcedure("getAulas",null,_r,null);
DBRow _row2 = null;			
while ((_row2 = dbxr.FetchAsArray())!=null)						
   Console.WriteLine("Datas: " + _row2["Resultados"]);	
}
catch(Exception e){
Console.WriteLine(e.StackTrace);
}
}

As classes implementam o IDisposable que fecham as conexões à BD quando se destroi o objecto DBWrapper.

Isto não invalida o uso do Close no objecto ;) (Good Practice).

Existe ainda a Possibilidade de obter o object da conexão à BD, para trabalhar sem o wrapper.

MySqlConnection x=c.GetMysqlConnectionObject();    // Mysql

SqlConnection x=c.GetMSSQLConnectionObject();      // Sql Server

OleDbConnection x=c.GetAccessConnectionObject();  // Access

Espero que seja util .

/Ing

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Óptimo trabalho!!  Deu muito jeito para usar com o MySql :D

E já agora uma pequena dúvida:

Se apenas precisar de interagir com o MySql basta usar o Mysql.Data.dll ?

E quando se adiciona às referências, o MySql.Data.xml fica referenciado automaticamente?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Óptimo trabalho!!  Deu muito jeito para usar com o MySql :D

E já agora uma pequena dúvida:

Se apenas precisar de interagir com o MySql basta usar o Mysql.Data.dll ?

tanks.

o Mysql.Data.Dll é o "driver odbc" para mysql http://dev.mysql.com/downloads/connector/net/1.0.html, podes usa-lo se quiseres apenas ligar a mysql. a api é 95% igual à dos outros drivers odbc da framework.

Só referenciando essa dll não podes usar o wrapper feito por mim. apenas isso.

E quando se adiciona às referências, o MySql.Data.xml fica referenciado automaticamente?

yep.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tomei a liberdade de pedir ao inginheiiro para estender a funcionalidade desta API e assim adicionei-lhe a compatibilidade com Firebird.

(E porquê Firebird? Bom, porque precisei de uma base de dados embebida num programa e achei esta uma boa escolha, claro que há mais, mas esta foi a que me agradou mais.)

Quem quiser pode fazer o download da nova versão do EasyDB pode fazê-lo aqui.

Se quiserem usar uma base de dados embebida devem fazer o download do Firebird Embed Server aqui.

Como conectar a uma BD FireBird

DBWrapper c = new DBWrapper(EasyDb.DatabaseType.FireBird);
c.DBUser = "SYSDBA";
c.DBPassword = "masterkey";     
c.DBServerType = FbServerType.Embedded; // apenas necessario para conectar a uma base de dados embebida...       
c.Connect(@"C:\teste.fdb");

De resto é tudo igual a MySql.

Todos os créditos vão para o inginheiiro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Excelente trabaho "saco" :thumbsup:

Um bom exemplo de como ampliar as funcionalidades de um mini projecto.

mais uma vez, bom trabalho :P

/ing

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podiam acrescentar para PostgreSQL que é 100% free (ao contrário do Mysql que para uso comercial é pago)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora, colocando uma password na base de dados do ficheiro xxx.mdb eu não consigo aceder aos dados usando o seguinte código:

DBWrapper c = new DBWrapper(EasyDb.DatabaseType.Access);
c.DBUser="Admin";			
c.DBPassword="xxx";
c.Connect(@"c:\temp\Northwind.mdb");

Como posso resolver esta situação?

Desde já obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A conexão (Conection string) a BD Access não suporta (Workgroup system database with password). Nunca necessitei disso logo não implementei.

Workgroup system database with password é quando tens um ficheiro *.mdw que é responsavel pela autenticação.

podes (Não testei) contornar essa situação da seguinte forma:

DBWrapper c = new DBWrapper(EasyDb.DatabaseType.Access);
c.DBUser="Admin";         
c.DBPassword="xxx";
c.Connect(@"c:\temp\Northwind.mdb;Jet OLEDB:System Database=c:\temp\Northwind.mdw");

/ing

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, não consegui colocar as passwords a funcionar como sugeriste. Há alguma possibilidade de adicionares essa opção aos ficheiros que criaste?

Obrigado pela atenção

Ricardo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas ricardo.

tenta o seguinte:

DBWrapper c = new DBWrapper(EasyDb.DatabaseType.Access);
c.DBUser = "Admin";               
c.Connect(@"A_MINHA_BD.mdb;Jet OLEDB:Database Password=portugal;");

sendo que a password para a tua BD é a palavra portugal.

/Ing

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Funciona exactamente como eu queria. Uma vez mais muito obrigado.

Ricardo

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora