Para quem esteve procurando uma função que calcula o digito verificador
para montagem do XML da Nota Fiscal Eletronica em C# e não encontrou,
acabaram se os seus problemas eis abaixo o código da que eu criei quando precisei.
Aproveitem. Fiz porque não encontrei nenhuma pronta em C# na web. (Não procurei muito !!! rsrs)
private int GerarDigitoVerificadorNFe(string chave) { int soma = 0; // Vai guardar a Soma int mod = -1; // Vai guardar o Resto da divisão int dv = -1; // Vai guardar o DigitoVerificador int pesso = 2; // vai guardar o pesso de multiplicacao //percorrendo cada caracter da chave da direita para esquerda para fazer os calculos com o pesso for (int i = chave.Length - 1; i != -1; i--) { int ch = Convert.ToInt32(chave[i].ToString()); soma += ch * pesso; //sempre que for 9 voltamos o pesso a 2 if (pesso < 9) pesso += 1; else pesso = 2; } //Agora que tenho a soma vamos pegar o resto da divisão por 11 mod = soma % 11; //Aqui temos uma regrinha, se o resto da divisão for 0 ou 1 então o dv vai ser 0 if (mod == 0 || mod == 1) dv = 0; else dv = 11 - mod; return dv; }
Digito Verificador NFe C#
•segunda-feira, 13 fevereiro 2012 • Deixe um comentárioASP.NET Dynamic Data
•segunda-feira, 16 agosto 2010 • 5 ComentáriosImagine-se na seguinte situação: Uma amiga muito querida proprietária daquela \locadora que você sempre pega filmes na faixa (de grátis), disse que precisa de uma maneira “simples” de cadastrar no computador determinadas informações de sua locadora, como ela é realmente muito especial você não consegue dizer não, esquecendo de que seu tempo está corrido, estudo de certificação, trabalho atrasado e ainda fazendo o TCC da faculdade, como criar um sistema de cadastro para locadora sem nenhum tempo para isso?
Ahhhh! O nosso bom e velho amigo Visual Studio pode nos dar uma força, existe um template pouco utilizado devido algumas limitações para projetos complexos e de grande porte, mas para sistemas simples que podem ser baseados em seus modelos de dados Dynamic Data é seu nome.
Nas palavras da Microsoft “ASP.NET Dynamic Data lets you create extensible data-driven Web applications by inferring at run time the appearance and behavior of data fields and by deriving UI behavior from”.
Com o Dynamic Data é possível criar aplicações de forma simples e rápida, partindo da criação de um modelo de dados, com isso o Visual Studio fará todo o trabalho pesado ou quase todo, pois afinal precisamos justificar nossos baixos salários.
E ai vamos colocar a mão na massa?
Conforme já foi dito vamos começar pelo modelo.
Como pode ser visto é um modelo bem simples.
Aconselho a criar o modelo manualmente para lembrar como se faz, mas como a criação de modelo de dados não é o foco desse artigo, irei disponibilizar o SQL de criação desse banco ao final do artigo.
Agora vamos criar nosso sistema.
Selecione no Visual Studio File/New/Project quando a tela abrir em Installed Templates selecione Web e na tela ao lado selecione ASP.NET Dynamic Data Linq to SQL Web Application.
A figura abaixo ilustra.
Darei o nome de DynamicData para o projeto.
Como podemos verificar existe outra opção, o “Data Entities”, no entanto como iremos usar o SQL Server vamos ficar com o “Data Linq to SQL” pois existem debates que dizem que por sua estrutura ser mais simples ele acaba se tornando mais rápido, aproveitando a oportunidade gostaria que soubessem que tudo que for feito no Visual Studio 2010 pode também ser feito no 2008 com SP 1, mas por questões meramente viciantes vou brincar com o 2010 mesmo.
Após alguns segundos o VS2010 criará um projeto com seguinte estrutura.
Agora iremos ligar o nosso banco à aplicação.
- Mas já?
- Isso ai.
Com o “Ctrl + Alt + S”, temos a janela Server Explorer, que viabiliza conexões as bases de dados SQL Server. Clique com o botão direito em Data Connections é em Add Connection.
A próxima tela e para configurar a conexão, partirei do pressuposto que você saiba criar essa conexão, caso não saiba, existem vários tutorias na internet explicando. Na minha maquina a configuração fica assim e após clicar em ok, teremos a seguinte estrutura no Server Explorer.
Agora iremos criar o mapeamento desse modelo, algo parecido com o que a galera do Hibernate está cansado de fazer.
A Microsoft facilitou mais uma vez criando o template que facilita esse trabalho, o “Linq to SQL Classes”, para chegar até ele basta digitar a seqüência “Ctrl + Shift + A”, quando a tela Add New Item se abrir, navegue ate Visual C# / Data e nos templates escolha “Linq to SQL Classes” e de o nome de “ModeloLocadora.dbml“.
Ao clicar em Add, será aberto o arquivo criado que estará totalmente em branco, para fazer o mapeamento iremos fazer algo extremamente complicado, vamos arrastar as tabelas que queremos para essa área branca.
Depois de alguns segundo com o Visual Studio processando, eis a tela que surge.

Pode falar. É Legal não é mesmo! ![]()
Agora é necessário fazer o Visual Studio entender que é para ele configurar a aplicação de acordo com esse modelo.
- Como?
- Fácil.!
Localize no Solution Explorer o arquivo “Global.asax” e vamos editá-lo.
Vamos descomentar a seguinte linha e mudar seus valores.
// DefaultModel.RegisterContext(typeof(YourDataContextType),
// new ContextConfiguration() { ScaffoldAllTables = false });
Ficará assim:
DefaultModel.RegisterContext(typeof(ModeloLocadoraDataContext),
new ContextConfiguration() { ScaffoldAllTables = true });
O que foi mudado?
Trocamos o valor “YourDataContextType” pelo DataContext que foi criado a partir do modelo “ModeloLocadora.dbml” que criamos, Ficando “ModeloLocadoraDataContext”
Trocamos também o valor de
“ScaffoldAllTables= false” para “ScaffoldAllTables = true” ao dizermos que o ScaffolAllTable e verdadeiro, estamos dizendo ao Visual Studio que ele deve gerar a lógica para todas as tabelas do DataContext configurado. Faça a mágica.
- E agora?
- “Ctrl + F5” ![]()
- O que?????????
É isso mesmo está pronto, e foi preciso editar apenas uma linha, gasto apenas uns 5 ou 10 minutos dependo da qualidade do freguês que criou.
Eis a tela inicial.

Logicamente, existe muita customização a ser feita visto que o sistema foi gerado a partir do que foi criado no banco de dados. Podemos alterar o Design através do arquivo “Site.css” e podemos alterar as descrições em inglês através de edições feitas no arquivos .aspx e .ascx
Se quiserem um novo artigo mostrando um pouco dessas customizações é só pedir nos comentários, caso queriam enviar um e-mail e só usar as redes sociais ao lado ou entrar em contato pelo próprio e-mail.
Você gastará mais uns 30 minutos ou menos para customizar, vai levar para sua amiga instalar e garantir muitos outro filmes no 0800 (na faixa como se diz aqui em Goiânia) e sua eterna gratidão,
. Sem prejudicar seu trabalho que já está atrasado e muito menos seu TCC de final de curso.
Comentem para incentivar novos artigos!
Como prometido eis o link para o SQL de criação do banco de dados locadora, se tiver alguma dificuldade em criar o banco com as instruções SQL tente executar cada bloco de código separadamente e não todo de uma vez.
Só lembrando pra quem mora em Goiânia não se esqueçam de participar da reunião técnica do DevGoias.
Será um evento muito interessante.
Reunião Técnica de Set/2010 | Tema: ASP.NET WEBFORMS ou ASP.NET MVC?
•quinta-feira, 9 setembro 2010 • Deixe um comentárioE ai galera!
Este sábado (04/09/2010) tivemos nossa primeira reunião técnica do DevGoiás, o tema em pauta era ASP.NET WEBFORMS ou ASP.NET MVC? Para quem acompanha meu blog isso não é uma novidade, a novidade é que o evento foi um sucesso absoluto. O debate foi excelente eu mesmo retomei uma nova perspectiva sobre o ASP.NET MVC.
Vou relatar apenas alguns dos tópicos discutidos:
- Velocidade de execução, em um comparativo entre controles da renomada Telerik a grid MVC teve uma assombrosa velocidade quando comparada ao grid do ASP WEB FORM;
- Devido a um conhecimento precário de HTML para os que se dizem programadores WEB a curva de aprendizado é bem maior, terá que ser aprendido agora o já deveríamos saber.
- ASP NET MVC não veio pra substituir o ASP NET WEB FORMS como muitos acreditam, mas é apenas mais uma opção de desenvolvimento web.
- Ainda há uma confusão no conceito do que usar e quando usar. Há fontes que dizem que MVC é recomendável para aplicações de grande porte e outras fontes já diz que é voltado para websites;
- O cenário e um fator determinante em para a escolha de uma das duas tecnologias.
- Com o ASP.NET 4 (webForms) muita coisa foi melhorada ao antecessor, oASP.NET 3.5 SP1. Por exemplo controle do ClientID, controle sobre o ViewState, roteamento de URL nativo, renderização da saíde de execução dos controles em XHTML, redução do web.config, etc.
- Com o ASP.NET 4 grandes características que antes eram exclusivas do ASP.NET MVC passam a fazer parte das duas tecnologias, essa guerra promete!.
Mais informações só mesmo pra quem presenciou.
Mas quem não foi não precisa ficar triste, pois essas reuniões serão mensais sendo sempre no primeiro sábado do mês, o cadastro é feito no site www.devgoias.net. Os temas serão publicados com antecedência no mesmo site ou divulgado por membros da comunidade em seus blogs twitters e outras redes sociais, outra dica e acompanhar o twitter do DevGoiás.
Gostaria de deixar meus agradecimentos a Ultralogic por ter cedido o espaço no Office Flamboyant e pelo excelente Network Coffee.

Desenvolvendo com qualidade
•domingo, 19 setembro 2010 • Deixe um comentárioE ai pessoal!
No meu ultimo post, relatei sobre a última Reunião Técnica do DevGoias, que teve como tema:“ASP.NET MVC ou ASP.NET WEB FORMS?”. O debate foi impressionante pelo nível dos participantes e as discussões tiveram um aproveitamento impar. No entanto, foi colocado em pauta um tópico de causar polêmica. O nível técnico dos atuais desenvolvedores web é uma preocupação, a facilidade de se criar aplicativos web com as poderosas IDEs, ferramentas e WebControls , apesar de trazer muita produtividade atrapalha na qualificação dos profissionais em WebForms, pois sacrificamos partes e conceitos importantes no decorrer do caminho em virtude desses comportamentos gerados automaticamente. No intuito de ajudar passarei a postar algumas dicas que farão a diferença na hora de criar seus aplicativos web, informações que vão além de arrastar e soltar controles na sua pagina, mostrarei ou indicarei paginas que explicam os conceitos que outrora pulamos em nosso aprendizado.
A primeira dica se refere aos update panels, é muito comum de se ver um uso desregrado desse controle, acreditando que se esta obtendo todo o recurso de melhoria desse controle, porém ao terminar uma pagina com varias imagens vemos que seu desempenho fica bem aquém do que se pretendia. Isso acontece porque não é explicado o melhor uso do update panel. O blog do Fernando Gonçalves sempre traz coisas interessantes e recentemente ele escreveu um post com o nome de Utilizando ASP.NET Ajax de forma consciente, nesse artigo ele mostra como usar corretamente o ajax de forma a melhorar muita a performance de nossos aplicativos. Então ai esta a dica e ate a próxima.
Reunião Técnica DevGoias – Silverlight e Aplicações RIA para WEB
•sábado, 25 setembro 2010 • Deixe um comentárioReunião Técnica DevGoias – Silverlight e Aplicações RIA para WEB
A Tecnologia esta dando passos cada vez mais rápidos, a web já se estabeleceu com plataforma atual e do futuro, o usuário ficando mais e mais exigente, tudo isso obriga que as aplicações se adaptem á esse cenário. Vamos juntar tudo isso colocar no liquidificador e bater, resultado: RIA – Rich Internet Application (Aplicações de Internet Rica), na Microsoft quem defende a bandeira dessa tecnologia é o nosso querido SilverLight.
É após o sucesso da primeira Reunião Técnica o tema desse mês é nada mais do que “Silverlight e Aplicações RIA para web” a data do evento e dia 02 de Outubro das 9h às 12h mas para participar o processo e o mesmo da ultima reunião, o participante deve se inscrever no formulário que esta no site do DevGoias ou clique no banner abaixo e seja redirecionado ao mesmo.
Obs. Lembrando que as vagas são limitadas é a data da inscrição se encerra no dia 29 de setembro.
NOTA: Não é palestra. Leve o conhecimento e experiência que você tem, para os mais experientes, prepare seu material. Uma semana antes da reunião iremos enviar a todos os participantes a dinâmica da reunião.
Reunião Técnica – RIA Silverlight
•domingo, 3 outubro 2010 • 1 ComentárioBoa noite galera, bem não podia deixar o dia terminar (ops! Já passou da meia noite então já terminou) sem postar sobre a Reunião Técnica e fazer um resumo do evento. Bem! Antes me deixe falar rapidamente o que é a Reunião Técnica para os que estão começando agora a acompanhar meu blog.
Aqui em Goiânia temos uma galera aficionada por tecnologia membros do DevGoias, entre vários eventos desenvolvidos pela comunidade temos uma reunião mensal que ocorre sempre no primeiro sábado do mês, para falar/debater sobre temas previamente escolhidos. Nesses encontros temos a oportunidade trocar experiências com vários contextos de negócios e aplicações de diferentes tipos
Esse mês o tema abordado foi de aplicações Ria utilizando Silverlight, foi confrontado ate onde seria inteligente utilizar o Silverlight? Como ficarão as coisas quando vier o HTML 5? Entre outras perguntas inquietantes. Chegamos à conclusão que para o uso de Silverlight o contexto aplicado e determinante, em algumas situações como aplicações web que necessitam de um uso mais rico para gráficos, animações e usabilidades seu uso é magnífico já outros como sites, portal web e sistema disseminadores de informação seu uso se torna inviável visto que o mesmo e um caixa preta.
Bem essa foi apenas umas das abordagens levantadas, só estando lá para conseguir obter uma visão bacana sobre tudo que discutimos.
Foi um diferencial a participação ate mesmo de quem não pode estar presente fisicamente, por uma questão geográfica, mas que teve sua participação garantida através do tinychat.
Agora no mês que vem iremos falar sobre ORM Entity Framework, NHibernate, se tudo correr bem lá por segunda ou terça feira já estará disponível o formulário de inscrição no site do DevGoias, se não participou de nenhuma Reunião não perca mais essa oportunidade.
E ate lá…
Eis uma foto do pessoal
Reunião Técnica DevGoias – ORM – Entity Framework ou NHibernate
•terça-feira, 5 outubro 2010 • Deixe um comentárioReunião Técnica DevGoias – ORM – Entity Framework ou NHibernate
Marcado a hora e o tema da nova Reunião Técnica
Tema: ORM – Entity Framework ou NHibernate?
Local: Flamboyant Office
Data: 1º sábado de novembro (06 de novembro)
Horário: 9h às 12h
Não perca tempo cadastre-se já, e dessa vez não vá ficar de fora!
Clique na imagem abaixo ou acesse http://devgoias.net
Obs. Lembrando que as vagas são limitadas é a data da inscrição se encerra rapidamente.
NOTA: Não é palestra. Leve o conhecimento e experiência que você tem, para os mais experientes, prepare seu material.
BUSINESS INTELLIGENCE (BI).
•sábado, 12 março 2011 • Deixe um comentárioQuem sabe o que é BI levanta a mão! Não sabe? Se aproxega que uma Luz surgira no fim do Tunel.
Feliz Ano Novo Pessoal! É eu sei meio atrasado! Mas o BRASIL só inicia mesmo depois do carnaval. Mesmo assim peço desculpas aos ávidos leitores pelo recesso meio longo nos artigos, é que além do final do ano cheio de atividades extras ( festas de final de ano ), ainda fui em busca de novos desafios numa nova empresa, sem contar que estive envolvido em projetos extra horário comercial. Assim não sobra tempo para escrever. Mas agora consegui dar uma domada na agenda. E venho para falar de um assunto muito empolgante.
BUSINESS INTELLIGENCE (BI).
Esse artigo será meio conceitual, mas não menos interessante, também será bem superficial, para aqueles que nada sabem de BI.
Bussines Intelligence nada mais é do que um conceito que de acordo com o bom e velho Wikipédia surgiu na década de 80.
Para mim a melhor maneira de se explicar algo e com cenários reais. Então imagina a seguinte situação: Empresa do ramo de telefonia que precisa saber qual o Estado contem o menor índice de ligações efetuadas para fazer um trabalho que incentive o uso de telefones ou ainda qual a promoção gerou mais receita em termo de serviços prestados com essa informaçõe pode-se criar novas promoções similares com a que mais rendeu.
Mas como obter essas informações?
Bem qualquer sistema ERP bem elaborado pode fornecer esses relatórios você me responderia.
Mas se eu quiser cruzar esses dados com os funcionários de call center, pra descobrir qual o índice de reclamações esta sendo solucionado chegando a um possível motivo da não utilização dos serviços de comunicação ocasionados pelo péssimo atendimento (nosso sonho eles se preocuparem com isso né).
Ainda assim o ERP resolve.
Concordo mas sei por experiência própria que na medida em que esses relatórios gerenciais vão sendo solicitados, porque acredite os administradores vão querer relatórios ate de quantos clips de papel esta sendo usado na empresa, e quando esses dados vem de varias fonte de dados acaba inviabilizando essa forma de trabalho.
Ai entra o BI! Com esse conceito de explorar os dados de diversas fontes (utilizando de N ferramentas) que quando cruzados fornece a informação que pode ate salvar uma empresa. À Grosso modo centralizamos os dados de diversas fontes (banco de dados, planilhas, arquivos texto e etc) em uma/varias estruturas organizadas chamadas de Data Warehouse/Data Mart.
Dessa forma fica muito fácil de fazer muitos cruzamentos entre os dados obtendo a informação necessária.
Para esse primeiro artigo introdutório e só isso, vamos devagar pra ficar simples é também para não ficar um texto muito longo.
Nos próximos artigos explicarei o que é esse DW/DM e mostrarei outras coisas do universo BI.
Ate o próximo artigo pessoal!
Problemas com IIS e Visual Studio
•quarta-feira, 6 julho 2011 • Deixe um comentárioPara quem tem problemas com o IIS e o Visual Studio segue uma dica:
Se por ventura o IIS for instado apos o Visual Studio você será um grande candidato a problemas, que muitos só conseguem resolver apos uma bela formatação do sistema operacional e depois fazendo a instalação correta IIS depois Visual Studio. Mas eis que vem a magica.
1° Apos a instalação do IIS, execute o Visual Studio Command Prompt(para windows sevem e vista não esqueça de executar como administrador: botão direito do mouse), que normalmente fica na pasta de instalação do Visual Studio “Visual Studio Tools” no menu iniciar.
2° Digite o comando: “aspnet_regiis.exe -i” (sem as aspas)
Pronto seus problemas acabaram.
Ate a proxima…
Alterar MasterPage em Tempo execução (Changing MasterPage in execution time)
•quinta-feira, 21 julho 2011 • Deixe um comentárioGalera segue mais uma dica, para aqueles que como eu precisaram alterar a masterpage em tempo de execução apos alguma validação ou algo do tipo e so fazer assim na pagina que contem a master e que vai ser alterada:
protected void Page_PreInit(object sender, EventArgs e)
{
if (Usuario == (int)Usuario.Administrador)
{
this.MasterPageFile = "~/MasterAdministrador.Master";
}
}
Ate a proxíma galera…
Visual Studio 11 Preview
•terça-feira, 11 outubro 2011 • Deixe um comentárioPessoal, essa e bem rapidinho… Para alguns nem e novidade, para quem foi ao Teched 2011 por exemplo, mas o Visual Studio já contempla a sua mais nova versão ate então denominada ”Microsoft® Visual Studio® 11 Developer”. e como sempre é possível baixar e instalar para teste. Lembrando que ainda é só o Preview… Segue o link Baixe e seja feliz Visual Studio 11. Ainda não tive tempo de baixar e ver as novidades mas assim que o fizer posto aqui para vocês.
O que é Design Patterns?
•sexta-feira, 14 outubro 2011 • Deixe um comentárioO que é Design Patterns?
E padrão de projeto horas!
Quem nunca se pegou pensando o que era esse famigerado Design Patterns, levanta a mão.
Explicação chata em inglês traduzido porcamente pelo google tradutor:
“Em engenharia de software , um design Patterns é uma solução geral reutilizável para um problema que comumente ocorrem dentro de um determinado contexto em design de software . Um padrão de design não é um projeto acabado que pode ser transformado diretamente em código . É uma descrição ou modelo de como resolver um problema que pode ser usado em muitas situações diferentes. Object-oriented design patterns tipicamente mostram relacionamentos e interações entre as classes ou objetos , sem especificar as classes aplicação final ou objetos que estão envolvidos. Muitos padrões implica orientação a objetos ou, mais geralmente estado mutável, e assim pode não ser tão aplicável em programação funcional línguas, no qual os dados são imutáveis ou tratado como tal.”
http://en.wikipedia.org/wiki/Design_pattern_(computer_science)
Bem! Então pessoal ficou claro?…
Calma! Brincadeira…
Vou tentar dar uma definição mais abrasileirada sobre o tema.
Imagine que você tem um problema, que é produzir um refrigerante de Cola que não seja exageradamente doce, combinado com uma leve sensação de azedinho, que apesar de não matar a sede deixe momentaneamente a impressão de que matou. Ai você coloca a mão não cabeça, respira fundo e começa a maldizer toda sua geração, começa a testar ingredientes, sai dando paulada pra todo lado, perde alguns fios de cabelo.
Ai eu chego pra você e digo que a Coca-Cola esta fornecendo sua receita livremente (aqui viajamos um pouco). Bem a receita da Coca-Cola pode ser considerada de forma grosseira a um Design Patterns, dos refrigerantes.
-Poxa cara agora e que não entendi nada!
Bem vou tentar tornar mais simples, quando você sai tentando dar solução a um problema qualquer, você pode ate chegar ao resultado esperado, mas antes você sofre muito passando por problemas que outros já vivenciaram (no caso a fabrica da Coca-Cola).
Bem ai que entra um Design Patterns, ele é essa experiência formatada em padrões, soluções de problemas que outros já resolveram com determinada linha de pensamento e comportamento e que se provou ser eficiente (quer coisa mais eficiente que a Coca-Cola?), transformado em padrões de projetos.
O Padrão de projeto não e a solução certa para determinado assunto, simplesmente é a que se mostrou bastante eficiente e que já solucionou muitos problemas que sem ele teríamos que ir por tentativa e erro ate conseguir um resultado aceitável.
Bem! Essa e uma introdução. Espero logo ter tempo de escrever sobre alguns desses padrões e dar exemplos práticos.
Ate galera…
Tabela CultureInfo
•sexta-feira, 6 janeiro 2012 • Deixe um comentárioPra quem como eu precisa sempre estar pesquisando quais os códigos de globalização do CultureInfo.
Lembrando que para usar o CultureInfo é necessário fazer o
using System.Globalization;
| País | Código |
|---|---|
| Africâner (África do Sul) | af-ZA |
| አማርኛ (ኢትዮጵያ) | am-ET |
| Árabe (E.A.U.) | ar-AE |
| Árabe (Bahrein) | ar-BH |
| Árabe (Argélia) | ar-DZ |
| Árabe (Egito) | ar-EG |
| Árabe (Iraque) | ar-IQ |
| Árabe (Jordânia) | ar-JO |
| Árabe (Kuwait) | ar-KW |
| Árabe (Líbano) | ar-LB |
| Árabe (Líbia) | ar-LY |
| Árabe (Marrocos) | ar-MA |
| Mapudungun (Chile) | arn-CL |
| Árabe (Omã) | ar-OM |
| Árabe (Qatar) | ar-QA |
| Árabe (Arábia Saudita) | ar-SA |
| Árabe (Síria) | ar-SY |
| Árabe (Tunísia) | ar-TN |
| Árabe (Iêmen) | ar-YE |
| অসমীয়া (ভাৰত) | as-IN |
| Azeri (Cirílico, Azerbaijão) | az-Cyrl-AZ |
| Azeri (Latino, Azerbaijão) | az-Latn-AZ |
| Башҡорт (Россия) | ba-RU |
| Bielo-russo (Belarus) | be-BY |
| Búlgaro (Bulgária) | bg-BG |
| বাংলা (বাংলাদেশ) | bn-BD |
| বাংলা (ভারত) | bn-IN |
| བོད་ཡིག (ཀྲུང་ཧྭ་མི་དམངས་སྤྱི་མཐུན་རྒྱལ་ཁབ།) | bo-CN |
| brezhoneg (Frañs) | br-FR |
| босански (Босна и Херцеговина) | bs-Cyrl-BA |
| bosanski (Bosna i Hercegovina) | bs-Latn-BA |
| Catalão (Catalunha) | ca-ES |
| Corsu (France) | co-FR |
| Tcheco (República Tcheca) | cs-CZ |
| Cymraeg (y Deyrnas Unedig) | cy-GB |
| Dinamarquês (Dinamarca) | da-DK |
| Alemão (Áustria) | de-AT |
| Alemão (Suíça) | de-CH |
| Alemão (Alemanha) | de-DE |
| Alemão (Liechtenstein) | de-LI |
| Alemão (Luxemburgo) | de-LU |
| dolnoserbšćina (Nimska) | dsb-DE |
| Divehi (Maldivas) | dv-MV |
| Grego (Grécia) | el-GR |
| Inglês (Caribe) | en-029 |
| Inglês (Austrália) | en-AU |
| Inglês (Belize) | en-BZ |
| Inglês (Canadá) | en-CA |
| Inglês (Reino Unido) | en-GB |
| Inglês (Irlanda) | en-IE |
| English (India) | en-IN |
| Inglês (Jamaica) | en-JM |
| English (Malaysia) | en-MY |
| Inglês (Nova Zelândia) | en-NZ |
| Inglês (República das Filipinas) | en-PH |
| English (Singapore) | en-SG |
| Inglês (Trinidad e Tobago) | en-TT |
| Inglês (Estados Unidos) | en-US |
| Inglês (África do Sul) | en-ZA |
| Inglês (Zimbábue) | en-ZW |
| Espanhol (Argentina) | es-AR |
| Espanhol (Bolívia) | es-BO |
| Espanhol (Chile) | es-CL |
| Espanhol (Colômbia) | es-CO |
| Espanhol (Costa Rica) | es-CR |
| Espanhol (República Dominicana) | es-DO |
| Espanhol (Equador) | es-EC |
| Espanhol (Espanha) | es-ES |
| Espanhol (Guatemala) | es-GT |
| Espanhol (Honduras) | es-HN |
| Espanhol (México) | es-MX |
| Espanhol (Nicarágua) | es-NI |
| Espanhol (Panamá) | es-PA |
| Espanhol (Peru) | es-PE |
| Espanhol (Porto Rico) | es-PR |
| Espanhol (Paraguai) | es-PY |
| Espanhol (El Salvador) | es-SV |
| Español (Estados Unidos) | es-US |
| Espanhol (Uruguai) | es-UY |
| Espanhol (Venezuela) | es-VE |
| Estoniano (Estônia) | et-EE |
| Basco (País Basco) | eu-ES |
| Persa (Irã) | fa-IR |
| Finlandês (Finlândia) | fi-FI |
| Filipino (Pilipinas) | fil-PH |
| Faroês (Ilhas Faroés) | fo-FO |
| Francês (Bélgica) | fr-BE |
| Francês (Canadá) | fr-CA |
| Francês (Suíça) | fr-CH |
| Francês (França) | fr-FR |
| Francês (Luxemburgo) | fr-LU |
| Francês (Principado de Mônaco) | fr-MC |
| Frysk (Nederlân) | fy-NL |
| Gaeilge (Éire) | ga-IE |
| Gàidhlig (An Rìoghachd Aonaichte) | gd-GB |
| Galego (Galiza) | gl-ES |
| Elsässisch (Frànkrisch) | gsw-FR |
| Gujarati (Índia) | gu-IN |
| Hausa (Nigeria) | ha-Latn-NG |
| Hebraico (Israel) | he-IL |
| Híndi (Índia) | hi-IN |
| hrvatski (Bosna i Hercegovina) | hr-BA |
| Croata (Croácia) | hr-HR |
| hornjoserbšćina (Němska) | hsb-DE |
| Húngaro (Hungria) | hu-HU |
| Armênio (Armênia) | hy-AM |
| Indonésio (Indonésia) | id-ID |
| Igbo (Nigeria) | ig-NG |
| ꆈꌠꁱꂷ (ꍏꉸꏓꂱꇭꉼꇩ) | ii-CN |
| Islandês (Islândia) | is-IS |
| Italiano (Suíça) | it-CH |
| Italiano (Itália) | it-IT |
| ᐃᓄᒃᑎᑐᑦ (ᑲᓇᑕ) | iu-Cans-CA |
| Inuktitut (kanata) | iu-Latn-CA |
| Japonês (Japão) | ja-JP |
| Georgiano (Geórgia) | ka-GE |
| Cazaque (Cazaquistão) | kk-KZ |
| kalaallisut (Kalaallit Nunaat) | kl-GL |
| ខ្មែរ (កម្ពុជា) | km-KH |
| Kannada (Índia) | kn-IN |
| Konkani (Índia) | kok-IN |
| Coreano (Coréia) | ko-KR |
| Quirguiz (Quirguistão) | ky-KG |
| Lëtzebuergesch (Luxembourg) | lb-LU |
| ລາວ (ສ.ປ.ປ. ລາວ) | lo-LA |
| Lituano (Lituânia) | lt-LT |
| Letão (Letônia) | lv-LV |
| Reo Māori (Aotearoa) | mi-NZ |
| Macedônio (Antiga República Iugoslava da Macedônia) | mk-MK |
| മലയാളം (ഭാരതം) | ml-IN |
| Mongol (Cirílico, Mongólia) | mn-MN |
| ᠮᠤᠨᠭᠭᠤᠯ ᠬᠡᠯᠡ (ᠪᠦᠭᠦᠳᠡ ᠨᠠᠢᠷᠠᠮᠳᠠᠬᠤ ᠳᠤᠮᠳᠠᠳᠤ ᠠᠷᠠᠳ ᠣᠯᠣᠰ) | mn-Mong-CN |
| Kanien’kéha (Canada) | moh-CA |
| Marata (Índia) | mr-IN |
| Malaio (Sultanato de Brunei) | ms-BN |
| Malaio (Malásia) | ms-MY |
| Malti (Malta) | mt-MT |
| Norueguês, Bokmal (Noruega) | nb-NO |
| नेपाली (नेपाल) | ne-NP |
| Holandês (Bélgica) | nl-BE |
| Holandês (Países Baixos) | nl-NL |
| Norueguês, Nynorsk (Noruega) | nn-NO |
| Sesotho sa Leboa (Afrika Borwa) | nso-ZA |
| Occitan (França) | oc-FR |
| ଓଡ଼ିଆ (ଭାରତ) | or-IN |
| Punjabi (Índia) | pa-IN |
| Polonês (Polônia) | pl-PL |
| درى (افغانستان) | prs-AF |
| پښتو (افغانستان) | ps-AF |
| Português (Brasil) | pt-BR |
| Português (Portugal) | pt-PT |
| K’iche (Guatemala) | qut-GT |
| runasimi (Bolivia Suyu) | quz-BO |
| runasimi (Ecuador Suyu) | quz-EC |
| runasimi (Peru Suyu) | quz-PE |
| Rumantsch (Svizra) | rm-CH |
| Romeno (Romênia) | ro-RO |
| Russo (Rússia) | ru-RU |
| Kinyarwanda (Rwanda) | rw-RW |
| саха (Россия) | sah-RU |
| Sânscrito (Índia) | sa-IN |
| davvisámegiella (Suopma) | se-FI |
| davvisámegiella (Norga) | se-NO |
| davvisámegiella (Ruoŧŧa) | se-SE |
| සිංහ (ශ්රී ලංකා) | si-LK |
| Eslovaco (Eslováquia) | sk-SK |
| Esloveno (Eslovênia) | sl-SI |
| åarjelsaemiengiele (Nöörje) | sma-NO |
| åarjelsaemiengiele (Sveerje) | sma-SE |
| julevusámegiella (Vuodna) | smj-NO |
| julevusámegiella (Svierik) | smj-SE |
| sämikielâ (Suomâ) | smn-FI |
| sääm´ǩiõll (Lää´ddjânnam) | sms-FI |
| Albanês (Albânia) | sq-AL |
| српски (Босна и Херцеговина) | sr-Cyrl-BA |
| Serbian (Cyrillic, Serbia and Montenegro (Former)) | sr-Cyrl-CS |
| српски (Црна Гора) | sr-Cyrl-ME |
| српски (Србија) | sr-Cyrl-RS |
| srpski (Bosna i Hercegovina) | sr-Latn-BA |
| Serbian (Latin, Serbia and Montenegro (Former)) | sr-Latn-CS |
| srpski (Crna Gora) | sr-Latn-ME |
| srpski (Srbija) | sr-Latn-RS |
| Sueco (Finlândia) | sv-FI |
| Sueco (Suécia) | sv-SE |
| Quissuaíle (Quênia) | sw-KE |
| Sírio (Síria) | syr-SY |
| Tâmil (Índia) | ta-IN |
| Telugu (Índia) | te-IN |
| Тоҷикӣ (Тоҷикистон) | tg-Cyrl-TJ |
| Tai (Tailândia) | th-TH |
| türkmençe (Türkmenistan) | tk-TM |
| Setswana (Aforika Borwa) | tn-ZA |
| Turco (Turquia) | tr-TR |
| Tártaro (Rússia) | tt-RU |
| Tamazight (Djazaïr) | tzm-Latn-DZ |
| ئۇيغۇرچە (جۇڭخۇا خەلق جۇمھۇرىيىتى) | ug-CN |
| Ucraniano (Ucrânia) | uk-UA |
| Urdu (República Islâmica do Paquistão) | ur-PK |
| Uzbeque (Cirílico, Uzbequistão) | uz-Cyrl-UZ |
| Uzbeque (Latino, Uzbequistão) | uz-Latn-UZ |
| Vietnamita (Vietnã) | vi-VN |
| Wolof (Sénégal) | wo-SN |
| isiXhosa (uMzantsi Afrika) | xh-ZA |
| Yoruba (Nigeria) | yo-NG |
| Chinês (República Popular da China) | zh-CN |
| Chinês (Região Administrativa Especial de Hong Kong) | zh-HK |
| Chinês (Região Administrativa Especial de Macau) | zh-MO |
| Chinês (Cingapura) | zh-SG |
| Chinês (Taiwan) | zh-TW |
| isiZulu (iNingizimu Afrika) | zu-ZA |
Utilidade do using
•sexta-feira, 6 janeiro 2012 • Deixe um comentárioQuando me deparei com o using ( instrução) a primeira vez não sabia para que servia, e na época conversando com um MVP (especialista microsoft) não deixei passar a oportunidade: “Para que serve essa isso”. Ele me respondeu que o using usado no meio do código e uma forma de obter o dispose() automático dos objetos utilizados dentro do bloco, evitando assim usar blocos try{} finaly{}. Depois disso nunca mais usei outro. Agora compartilhando conhecimento, eu sei e muito básico mas sei que tem muita gente que não sabia!
Bem não sei se essa é a unica utilidade mas que o código fica mais legível utilizando using, não tenho duvida.
Veja abaixo e tire suas próprias conclusões, e para quem também não entendeu de qual using estou falando.
Código simples mas pouco seguro
SqlConnection conn = null;
conn = new SqlConnection("connectionstring");
//Código qualquer
conn.Dispose();
Código seguro “mas feio ao meu ver”
SqlConnection conn = null;
try
{
conn = new SqlConnection("connectionstring");
//Código qualquer
}
finally
{
conn.Dispose();
}
Agora esse sim…
using (SqlConnection conn = new SqlConnection("connectionstring"))
{
//Código qualquer
}
Valores equivalentes do C# e SQL
•sexta-feira, 6 janeiro 2012 • Deixe um comentárioColoquei uma tabela com os tipos de dados C# e SQL Server para quem precisa fazer o mapeamento entre os objetos C# e dados do SQL server.
| SQL Server | C# | Máximo | Mínimo | |
| BIGINTSqlInt64 | long (Int64)System.Int64 | 9,223,372,036,854,775,807 | −9,223,372,036,854,775,808 | 8 bytes |
| INTSqlInt32 | int (Int32)System.Int32 | 2,147,483,647 | -2,147,483,648 | 4 bytes |
| SMALLINTSqlInt16 | Short (Int16)System.Int16 | 32,767 | -32,768 | 2 bytes |
| TINYINTSqlByte | byteSystem.Byte | 255 | 0 | 1 byte |
| BITSqlBoolean | bool (Boolean)System.Boolean | 1 | 0 | 1 byte |
| DATETIMESqlDateTime | DateTimeSystem.DateTime | (C#) 31/12/9999 23:59:59(SQL) 31/12/9999 23:59:59 | (C#) 1/1/0001 00:00:00(SQL) 1/1/1753 00:00:00 | 8 bytes |
| DATETIME2*System.DateTime | DateTimeSystem.DateTime | 31/12/9999 23:59:59 | 1/1/0001 00:00:00 | |
| SMALLDATETIMESqlDateTime | 06/06/2079 23:59:00 | 01/01/1900 00:00:00 | 4 bytes | |
| DATE* | 0001-01-01 | 9999-12-31 | ||
| TIME(7)* | 23:59:59.9999999 | 00:00:00.0000000 | 5 bytes | |
| REALSqlSingle | Float (Single)System.Single | 3.402823E+38 | -3.402823E+38 | 4 bytes |
| FLOATSqlDouble | DoubleSystem.Double | (C#) 1.79769313486232E+308(SQL) 1.79E + 308 | (C#) -1.79769313486232E+308(SQL) -1.79E + 308 | 8 bytes4-8 bytes |
| DECIMAL / NUMERICSqlDecimal | DecimalSystem.Decimal | (C#) 79228162514264337593543950335(SQL) 10^38–1 | (C#) -79228162514264337593543950335(SQL) -10^38+1 | 16 bytes /5-20 bytes |
| MONEYSqlMoney | DecimalSystem.Decimal | 2^63-1 / 10000 | -2^63 / 10000 | 8 bytes |
| SMALLMONEYSqlMoney | DecimalSystem.Decimal | +214,748.3647 | -214,748.3648 | 4 bytes |
| TEXTSqlString | 2,147,483,647 | 0 | número de chars | |
| NTEXTSqlString | 1,073,741,823 | 0 | 2 vezes o número de chars contidos | |
| CHARSqlString | 8.000 | 0 | número de chars | |
| NCHARSqlString | 4.000 | 0 | 2 vezes o número de chars + 2 bytes | |
| VARCHARSqlString | 8.000 | 0 | número de chars contidos | |
| NVARCHARSqlString | 4.000 | 0 | 2 vezes o número de chars contidos | |
| VARCHAR(MAX)**SqlString | 2147483647 | 0 | número de chars contidos | |
| NVARCHAR(MAX)**SqlString | 2147483647 | 0 | 2 vezes o número de chars contidos | |
| UNIQUEIDENTIFIERSqlGuid | GuidSystem.Guid |
* Suportado apenas no SQL 2008.
** Suportado apenas no SQL 2008 e 2005.












