domingo, 17 de novembro de 2013

Breve introdução ao SQL

Breve introdução ao SQL

As linguagens SQL são sintaxes computacionais específicas para a manipulação de dados armazenados em “Sistemas de Armazenamento de Dados Relacionais”, mais conhecidos como “Bancos de Dados”. O banco de dados Microsoft SQL Server aceita comandos na sintaxe MS SQL, um tipo específico de linguagem SQL. Uma característica importante da linguagem é que os comandos não levam em conta se as letras são maiúsculas ou minúsculas, assim “select”, “SELECT” e “Select” são comandos equivalentes. Seguem os comandos básicos a partir dos quais as instruções são construídas:

CREATE TABLE

Usado principalmente para criar tabelas. O seguinte comando de exemplo cria uma tabela chamada “TB_Temp” com duas colunas do tipo texto com nomes de “Município” e “UF” respectivamente: CREATE TABLE TB_Temp (Município NVARCHAR(4000), UF NVARCHAR(4000))

ALTER TABLE

Possibilita a edição das colunas (campos) de uma tabela. Muito cuidado com este comando, não o utilize para alterar nenhuma tabela que não seja temporária. O seguinte comando cria a coluna de nome “Solução” do tipo numérico inteiro na tabela “TB_Temp”: ALTER TABLE TB_Temp ADD Solução INT

DROP TABLE

Utilizado para remover Tabelas e todo o Banco de Dados. Muito cuidado com este comando, não o utilize para eliminar nenhuma tabela que não seja temporária. Exemplo: DROP TABLE TB_Temp

SELECT ... FROM

Este é o comando mais comum. Retorna uma tabela com os campos e linhas selecionadas a partir de uma ou mais tabelas. O seguinte exemplo seleciona todas as linhas e colunas da tabela “TB_Temp”: SELECT * FROM TB_Temp

INSERT INTO

Insere linhas em uma ou mais tabelas. O seguinte exemplo insere a cidade de São Paulo na tabele “TB_Temp”: INSERT INTO TB_Temp (Município,UF) VALUES (‘São Paulo’,’SP’) Já se você quiser transferir valores entre tabelas, substitua os valores por um comando “SELECT”. Exemplo: INSERT INTO TB_Abrangencia SELECT Municipio, Solucao, 15 as Fornecedor FROM TB_Abrangencia WHERE Fornecedor = 21 O comando acima faz com que o fornecedor 15 (Telefônica) atenda, com as mesmas tecnologias, todas as cidades atendidas pelo fornecedor 21 (Embratel).

UPDATE ... SET

Atualiza os dados de uma ou mais tabelas. O seguinte exemplo faz com que todas as linhas da tabela “TB_Temp” tenham o valor 9 na coluna “Solução”: UPDATE TB_Temp SET Solução=9 Normalmente o comando “UPDATE” é utilizado com a cláusula WHERE, que especifica quais linhas deve ser atualizadas. No exemplo abaixo são atualizadas apenas as cidades do Paraná: UPDATE TB_Temp SET Solução=9 WHERE UF=’PR’ Também pode ser feito update a partir de dados contidos em outras tabelas. Segue um exemplo: UPDATE TB_Temp,TB_Solucao SET TB_Temp.Solução=TB_Solucao.id WHERE VelMaxima > 100000 AND VelMinima = 0 O comando acima irá procurar uma solução que atenda a velocidades entre 0 e 100000, e esta solução será atribuída a todas as linhas da tabela TB_Temp. Surgirá um erro caso haja mais de uma solução que atenda à cláusula “WHERE”.

DELETE FROM

Remove linhas de uma ou mais tabelas. O seguinte exemplo remove todas as linhas cujo valor da coluna solução seja diferente de 9: DELETE FROM TB_Temp WHERE Solução<>9 Tenha muito cuidado com este comando. Utilize-o sempre com a palavra chave “WHERE” para não remover todo o conteúdo da tabela.

sábado, 4 de agosto de 2012

Como consumir componentes COM e ActiveX no C#

É bem simples, basta colocar o TlbImp.exe no computador onde os componentes estão instalados e rodar o comando passando a biblioteca a ser acessada como parâmetro. Será gerada uma DLL de mesmo nome no diretório do TlbImp.exe, e esta DLL será .NET pronta para ser usada no seu projeto.

quarta-feira, 6 de julho de 2011

Automatizando a mineiração de Bitcoins no Windows

Criei um pequeno script para facilitar a mineiração de Bitcoins no Windows
set host=localhost
set user=youruser
set password=yourpassword
set file=%appdata%\Bitcoin\bitcoin.conf
set pf=%programfiles(x86)%
set start=start ""
if "%pf%"=="" set pf=%programfiles%
echo rpcuser=%user% > %file%
echo rpcpassword=%password% >> %file%
%start% "%pf%\Bitcoin\Bitcoin.exe" -server
for /l %%X in (0,1,1) do %start% poclbm.exe -o %host% -d%%X -u %user% --pass=%password%

terça-feira, 8 de fevereiro de 2011

Como hospedar serviços WCF no IIS

Para o IIS 6.0 é necessário um comando a mais que para o IIS 7.0

"%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis" -i
"%windir%\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe" -i


Para no IIS 7.0 para Windows 64 bits é necessário adaptar o caminho


"%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis" -i
"%windir%\Microsoft.NET\Framework64\v3.0\Windows Communication Foundation\ServiceModelReg.exe" -i

terça-feira, 1 de fevereiro de 2011

Hudson CI versus Jenkins CI

Kohsuke Kawaguchi criou o Hudson-CI quando trabalhava na Oracle, mas a mesma licenciou o software como livre, com a exceção do nome “Hudson” que é propriedade da empresa.

Depois que Koshuke mudou de empresa, ele e a maioria esmagadora dos desenvolvedores queriam mover o repositório do site Java.net para o Github por causa do baixo percentual de disponibilidade do primeiro e das migrações com outages. A Oracle não concordou. Por isso agora o há um novo branch do Hudson. O mantido pelo desenvolvedor original e pela maioria da comunidade se passará a chamar Jenkins. Como ainda não há diferença entre as duas versões, tanto faz escolher. Mas como o Jenkins provavelmente terá mais desenvolvedores eu pretendo utilizá-lo.

Linq e seu filho mais famoso Linq-to-SQL

Com o .NET 3.0 e com o C# 3.0 foram introduzidas extensões à linguagem C# que mudou a forma de programar de muita gente. Uma das adições é uma syntaxe parecida com o SQL:

    int[] numbers = { 1, 2, 3 };
    var numbersPlusOne =
        from n in numbers
        select n + 1;

Mas também foram adicionados os Extension Methods:

    int[] numbers = { 1, 2, 3 };
    var numbersPlusOne =
        numbers
        .Select(n => n + 1);

Antes o tipo int[] não possuía o método Array.Select(Func<T, TResult>). Mas esse método pôde ser adicionado sem modificações à classe original através dos Extension Methods. Note que os dois trechos de código acima são equivalentes, apenas escritos de forma diferente, ambos em C# 3.0.

Breve introdução ao Mapeamento Objeto-Relacional para .NET

Antes do Mapeamento Objeto-Relacional (ORM em inglês) automatizado surgir tínhamos que desenvolver nossas classes de acesso a dados manualmente.

Esta classe é responsável por:
  • expor métodos para consulta ou atualização do banco, e para cada um destes métodos:
  • serializar os parâmetros
  • gerar e executar o código SQL
  • deserializar o resultado
E pelo fato da linguagem SQL mudar de um SGBD para outro, se ela for gerada manualmente a migração de bancos ficava muito difícil. Com a introdução dos ORMs estas classes não precisam mais serem escritas nem precisamos nos preocupar com migração de bancos.

Os principais ORMs para .NET são
  • NHibernate (FOSS)
  • Linq-to-SQL (.NET 3.0)
  • Entity Framework 1.0 (.NET 3.5)
  • Entity Framework 4.0 (.NET 4.0)