quinta-feira, 1 de maio de 2008

Tutorial: Transferindo dados em massa para o SQL Server

Objetivo

Você já precisou transferir milhares de linhas de dados de alguma fonte de dados como o Excel para uma tabela no SQL Server?

Bom, se essa é sua necessidade agora, aproveite para usar uma ferramenta do .NET: a classe SQLBulkCopy, do namespace System.Data.SQLClient.


Um exemplo simples

Para exemplificar o uso dessa classe, observe o trecho de código abaixo:

SqlBulkCopy bulkCopy = new SqlBulkCopy(suaConnectionString)

bulkCopy.DestinationTableName = nomeDaTabela;
bulkCopy.BulkCopyTimeout = 10000;
bulkCopy.WriteToServer(seuDataReader);

O trecho acima é bem simples. Você cria uma instância do SqlBulkCopy passando a string de conexão para o banco de dados para o qual seus dados serão copiados.

Depois disso, você define o nome da tabela que irá receber os dados, o tempo máximo que a transferência poderá durar e, por fim, um DataReader contendo os dados a serem transferidos.


Um exemplo completo!

Nada melhor que um exemplo completo para entender como resolver o problema. E, para isso, vamos pegar um caso bastante rasoável: imagine que você tem uma planilha do Excel e precisa transferí-la para o SQL Server (uma decisão bastante sábia!).

Como entrada do nosso método, temos uma string chamada sql que define o SELECT que será feito na planilha do Escel que formará nosso DataReader. O segundo argumento define o nome da tabela para a qual os dados serão copiados.

public void CarregaBD(string sql, string nomeDaTabela)
{
// String para conexão ao arquivo do Excel
string excelConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\dados.xls;Extended Properties=""Excel 8.0;HDR=YES;""";

// Cria a conexão com a planilha
OleDbConnection con = new OleDbConnection(excelConnectionString);

using (con)
{
OleDbCommand cmd = new OleDbCommand(sql, con);
con.Open();

// Cria um DataReader a partir dos dados
DbDataReader dataReader = cmd.ExecuteReader();

using (dataReader)
{
// SQL Server Connection String
string sqlCS =
ConfigurationManager.ConnectionStrings["bdConnectionString"].ConnectionString;

// Essa parte já é familiar, certo?! ;)
SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlCS);

using (bulkCopy)
{
bulkCopy.DestinationTableName = nomeDaTabela;
bulkCopy.BulkCopyTimeout = 10000;
bulkCopy.WriteToServer(dataReader);
}
}
}
}

Bom, espero que você faça bom proveito dessa classe! Por incrível que pareça, esse método tem me sido útil repetidas vezes!!! : )

terça-feira, 29 de abril de 2008

Tutorial: Filtro com parâmetros nulos

Agradecimento

Primeiramente, gostaria de deixar meu agradecimento ao Gray, que publicou um post em http://barnsite.spaces.live.com/blog/cns!8C400BF8F7A6CD0C!1150.entry.


Objetivos

Aqui, nosso objetivo é simples. Provavelmente você já precisou apresentar um GridView associado a um conjunto de filtros, todos opcionais. Nesse caso, você tem dois caminhos a seguir:
  1. Contruir uma clausula WHERE via código e executá-la usando o exec(@select);
  2. Usar nossa sugestão! : )


Filtrando de forma simples

Ok, vamos direto ao ponto! Para fazermos essa busca, basta usarmos a seguinte sintaxe:

SELECT *
FROM cadastro
WHERE (Estado = ISNULL(@Estado, Estado)) AND (Cidade = ISNULL(@Cidade, Cidade))

Fácil, rápido e descomplicado! A Função ISNULL(testar, substituir) verifica se o valor de testar é nulo. Se não for, ele retorna o seu valor. Se for nulo, então ela retorna o valor de substituir.

Assim, conseguimos um código limpo, simples e mais seguro de ser usado!

Mais sugestãoes como essa, entre em contato!

domingo, 20 de abril de 2008

Novas certificações MCTS para desenvolvedores

Com o lançamento das novas tecnologias, a Microsoft criou uma série de novas certificações em todas as áreas. As novas certificações seguem o conceito da série MCTS, focando em habilidades específicas e conhecimento prático das tecnologias.

Especificamente para a área de desenvolvimento, agora são 6 certificações MCTS.

Assim como as 3 relativas ao Visual Studio 2005, todas elas passam pela 70-536, que agora se chama Application Development Foundation. Apesar da mudança de nome, a prova contempla exatamente o mesmo conteúdo da anterior. O objetivo dela é trazer o estudante para dentro do universo do .NET Framework e apresentar tipos e namespaces básicos para todas as tecnologias de desenvolvimento.

As novas certificações são:
  • Windows forms applications
  • ASP.NET applications
  • ADO.NET applications
  • Windows Presentation Foundation applications
  • Windows Workflow Foundation applications
  • Windows Communication Foundation applications

Para quem já é certificado MCTS ou MCPD, não é necessário fazer o exame 70-536 novamente. Assim, só é preciso fazer uma prova para obter cada uma das novas certificações.

Como pode-se notar, a certificação MCTS relativa a aplicações distribuidas sumiu. De certo modo, ela foi dissolvida entre o WCF e o ADO.NET e, segundo a apresentação da Microsoft, será revista no nível MCPD.

Para quem quiser ver a apresentação completa da Microsoft sobre as novas certificações, dê uma olhada em:
https://mcp.microsoft.com/mcp/multimedia/livemeetings/01230817.07/Start.htm

E boa sorte!

quarta-feira, 26 de março de 2008

Primeiros passos: Desenvolvimento Web

Para quem está começando a desenvolver para a web usando o ASP.NET, acho que a melhor fonte de inspiração inicial é o site http://www.asp.net/learn/videos/#beginners.

Nele, foram organizados uma série de vídeos que mostram de forma extremamente prática e direta, como trabalhar com o ASP.NET. A série de 14 vídeos cobrem os principais conceitos e, ao final, já te dá uma boa base para começar a construir suas primeiras aplicações dirigidas a dados, com login para seus usuários e usando muitas das facilidades dessa tecnologia!

E depois, para entender novos conceitos, tirar algumas dúvidas e aprender mais, dê uma olhada nos vídeos "How do I?", que são excelentes! Cobrem vários tópicos, sempre sobre alguns exemplos prático.

Com essas duas séries de vídeos, você já terá um conhecimento amplo, que poderá ser lapidado com as dezenas (ou centenas, milhares...) de horas que você vai passar na frente do Visual Studio!

Boa sorte!

Mudanças e aprendizado

Viramos o ano e a Microsoft começou a oficializar o lançamento de uma série de novas tecnologias e, para quem quem trabalha com isso, um turbilhão de novidades, livros, tutoriais, self-paced courses, blogs e discussões surgem para tentar nos manter atualizados.

O grande desafio nesses momentos é: como se manter atualizado, sobrevivendo a todo o marketing de lançamentos e conseguir informações consistentes e confiáveis para que possamos desenvolver um conhecimento sólido sobre o que está aparecendo?

E, para quem está chegando agora no mundo de desenvolvimento da Microsoft, como entender o que é básico e fundamental e, a partir disso, desenvolver as habilidades e conhecer as tecnologias disponíveis?

Venho trabalhando com as tecnologias da Microsoft há aproximadamente 5 anos, e, especialmente no último ano, tenho focado meus estudos para ser um especialista nelas. O que meus esforços de estudo me mostraram é que o universo de coisas dentro da Microsoft é enorme e, quanto mais se estuda, mais se percebe o quanto falta aprender. Especialmente em momentos de mudanças e lançamentos, como é esse ano de 2008, com o Windows Server 2008, SQL Server 2008, Visual Studio 2008, entre muitos outros produtos que estão no forno como o Silverlight 2.

Além disso, minha experiência como aluno me diz que só realmente aprendemos o que aplicamos e fazemos no dia-a-dia. Ler sobre um assunto nunca é o suficiente.

Minha idéia aqui é organizar um espaço para publicar conteúdo, indicações de livros e links para todo o tipo de material sobre essas tecnologias, intimamente ligadas e necessárias para o bom desenvolvimento.

Os principais assuntos que quero tratar são relativos a desenvolvimento, linguagens, banco de dados, arquitetura, gestão de projetos, sharepoint e novas tecnologias. Sempre que possível, quero misturar o real e o virtual e trazer mais gente para discutir os assuntos em pauta da semana, para enriquecer as dicussões.

Enfim, mais uma espécie de índice sobre como aprender .NET.

Mas, gosto de uma frase que li em um dos foruns de discussão que dizia mais ou menos isso: Não se preocupe tanto em aprender tudo. Daqui a pouco, tudo muda de novo!