Programando Em C#

Embed Size (px)

Citation preview

  • 8/12/2019 Programando Em C#

    1/38

    CURSO DE

    por

    Carlos Vamberto

    Mdulo I

    Introduo ao .NET com C#

  • 8/12/2019 Programando Em C#

    2/38

    pg in a2

    Dedicatria

    minha esposa Iara Bezerra e a minha filha Karlla Oksana

    Agradecimentos

    Ao grupo de estudo .NUG (.NET User Group - http://www.vsoft.com.br/dotnug), pelo incentivo derealizar um trabalho ao pblico voltado a tecnologia .NET.

    Ao meu pai, Carlos Vamberto, pelo apoio didtico e lgico deste material.

    Prefcio

    Imaginemos um mundo que em poucos intervalos de tempo esteja sempre evoluindo de formaveloz, onde os poucos que conseguem conviver naturalmente com essa evoluo soconsiderados gurus.

    Agora vamos tornar este mundo imaginrio em um mondo real, concreto. Este mundo a que nosrefirimos a TI Tecnologia da Informao, composta de vrias divises e entre elas a dodesenvolvimento de solues de sistemas.

    Julgamos que este material ir ajudar os interessados no conhecimento do topo da tecnologia dedesenvolvimento de solues, vez que ele fornecer uma viso bsica do .NETe conhecimentos

    necessrios da principal linguagem de programao para esta tecnologia que o C#(C Sharp daMicrosoft).

    Faremos uma abordagem da estrutura da linguagem em POO(Programao Orientada a Objeto)usando o C#, ademais das particularidades das Classes do Framework .NETe seu uso geral.

    http://www.vsoft.com.br/dotnughttp://www.vsoft.com.br/dotnug
  • 8/12/2019 Programando Em C#

    3/38

    pg in a3

    Sumrio

    Dedicatria........................................................................................................................2 Agradecimentos .................................................................................................................2 Prefcio.............................................................................................................................2 Sumrio............................................................................................................................3 Captulo 1 Introduo.......................................................................................................4

    O que .NET...................................................................................................................4 Conectando seu mundo....................................................................................................4 .NET FrameWork .............................................................................................................4 Common Language Runtime (CLR) ....................................................................................5Compilao.....................................................................................................................6

    Capttulo 2 Introduo ao C# ............................................................................................6 Construindo a primeira aplicao em C# (Al Mundo) ..........................................................7Construindo uma aplicao com parmetros .......................................................................7Construindo uma aplicao com entrada interativa ..............................................................8Tipos de Dados................................................................................................................8

    Boolean Tipo Lgico....................................................................................................8 Vetores ........................................................................................................................11

    Captulo 3 - Trabalhando com Comandos Condicionais ..........................................................13If ... else ......................................................................................................................13 switch...case.................................................................................................................14

    Captulo 4 - Trabalhando com Comandos de Repetio..........................................................15while............................................................................................................................ 15 do ... while ...................................................................................................................16 for ...............................................................................................................................17 for each........................................................................................................................ 17

    Captulo 5 - Mtodos.........................................................................................................18 Captulo 6 - Namespace .................................................................................................... 20Captulo 7 - Classes..........................................................................................................22

    Introduo.................................................................................................................... 22 Herana........................................................................................................................ 23

    Captulo 8 - Polimorfismo .................................................................................................. 25Captulo 9 - Struts (Suportes) ............................................................................................26Captulo 10 - Interface ......................................................................................................27Captulo 11 Tratamento de Excees................................................................................28

    Sintaxe de Tratamento do uso do try...catch..................................................................... 28Captulo 12 - Introduo a ADO.NET (Banco de Dados) .........................................................29

    Vantagens do ADO.NET .................................................................................................. 29Classes do ADO.NET ......................................................................................................30Esquema ......................................................................................................................30 Provedores de Acesso a Dados ........................................................................................30

    OleDb........................................................................................................................30 SqlClient....................................................................................................................31 DataSet.....................................................................................................................31

    Conexo com Banco de Dados......................................................................................... 32OleDB........................................................................................................................32 SqlClient....................................................................................................................32

    Trabalhando com SqlCommand e SqlDataReader...............................................................32Incluindo Dados.............................................................................................................34 Alterando Dados............................................................................................................ 35 Excluindo Dados............................................................................................................37

  • 8/12/2019 Programando Em C#

    4/38

    pg in a4

    Captulo 1 Introduo

    O q ue .NET

    .NET uma plataforma de software que conecta informaes, sistemas, pessoas e dispositivos. Aplataforma .NETconecta uma grande variedade de tecnologias de uso pessoal,de negcios, detelefonia celular a servidores corporativos, permitindo assim, o acesso rpido a informaesimportantes onde elas forem necessrias e imprescindveis.

    Desenvolvido sobre os padres de Web Services XML, o .NETpossibilita que sistemas eaplicativos, novos ou j existentes, conectem seus dados e transaes independente do sistemaoperacional(SO) instalado, do tipo de computador ou dispositivo mvel que seja utilizado e dalinguagem de programao que tenha sido utilizada na sua criao.

    O .NET um "ingrediente" sempre presente em toda a linha de produtos da Microsoft, oferecendoa capacidade de desenvolver, implementar, gerenciar e usar solues conectadas atravs de WebServices XML, de maneira rpida, barata e segura. Essas solues permitem uma integraomais gil entre os negcios e o acesso rpido a informaes a qualquer hora, em qualquer lugar eem qualquer dispositivo.

    Conectando seu mundo

    A idia primordial por trs do Microsoft .NET uma mudana de foco na informtica: passa deum mundo de aplicativos Web sites e dispositivos isolados para uma infinidade de computadores,dispositivos, transaes e servios que se conectam diretamente e trabalham em conjunto parafornecerem solues mais amplas e ricas.

    As pessoas tero o controle sobre como, quando e que informaes sero fornecidas a elas. Oscomputadores, sistemas e servios sero capazes de colaborar e operar entre si,simultaneamente, em favor do usurio, enquanto as empresas podero oferecer seus produtos eservios aos clientes certos, na hora certa, da forma certa, combinando processos de maneiramuito mais granular do que seria possvel at hoje.

    .NET FrameWork

    Podemos dizer que o .NET Frameworkconsiste em 3 partes:

    CLR (Common Language Runtime) Responsvel pela interface entre o cdigo e osistema operacional; Classes do Framework- Todas as linguagens que usam a tecnologia .NET usam asmesmas classes;

    ASP.NET- Fornece o acesso direto a toda a linguagem VB.NET(Visual Basic) e/ou C#apartir de uma plataforma de scriptao.

  • 8/12/2019 Programando Em C#

    5/38

    pg in a5

    Ilustrao 1 - Contexto do .NET Framework

    Common Language Runtime (CLR)Nessa nova tecnologia da Microsoft, o compilador no gera cdigo nativo, ou seja, ele gera umcdigo intermedirio para qualquer SO. O cdigo passa a ser compilado para ser rodado dentro doInterpretador CLR. Com isto, o desenvolvedor poder escolher uma entre as vrias linguagens deprogramao que trabalham com essa tecnologia.

    Aplicativo .NET

    C.L.R.

    Sist. Operacional

  • 8/12/2019 Programando Em C#

    6/38

    pg in a6

    Compilao

    Qualquer linguagem que usa a tecnologia .NET, realiza o mesmo esquema de compilao, ouseja, ao compilar um cdigo, gera-se um arquivo compilado para uma linguagem intermediria

    MSIL(MicroSoft Intermediate Language). Esse arquivo gerado chamado de Assenbly, podendoter duas extenses: EXEou DLL.

    Quando o arquivo executado, o JIT(Just-In-Time) converte este programa em cdigo demquina para ser rodado sobre o SOem que o CLR est rodando.

    Desta forma, o MSILgera o mesmo arquivo binrio para qualquer plataforma que tiver o CLR,que por sua vez converte esse arquivo para cdigo de mquina compatvel ao SOcorrente.

    Ilustrao 2 - Arquitetura do .NET

    Da se d a idia de Portabilidade, que consiste em procedida a compilao, o arquivo pode serexecutado em vrias plataformas de SO(Ex: Windows, Linux, MacOS, etc).

    Capttulo 2 Introduo ao C#

    A Microsoft define o C#como a principal linguagem de programao para uso da tecnologia .NET.Por ser uma derivao da linguagem C++, sem as suas limitaes, e uma linguagem bastantesimples de se implementar.

    NOTA: O Web Matrix uma ferramenta freeware para construo de sites ASP.NET feitototalmente em C#.

  • 8/12/2019 Programando Em C#

    7/38

    pg in a7

    Con st ru indo a pr imeira apl icao em C# (Al Mundo )

    Iremos construir agora uma simples aplicao com o C# do famoso "Al Mundo !!!" queencontramos na maioria das linguagens.

    No se preocupe com a implementao, o objetivo mostrar a eficincia do C#, vez que emtpicos posteriores voc se familiarizar com essa linguagem. Ok!

    1. Crie uma pasta na unidade C:com o nome C:\CSHARPe dentro desta pasta crie umasubpasta com o nome C:\CSHARP\ALOMUNDO ;

    2. Abra o prompt do DOS;3. Entre na pasta criada com o comando: CD \CSHARP\ALOMUNDO + ;4. Digite EDITalomundo.cs+ ;5. Digite a seguinte estrutura de cdigo:

    usingSystem;

    classalomundo

    {

    publicstaticvoidMain() // Veja que no interior do parnteses no contm argumento.

    {

    Console.WriteLine("Alo mundo!!!");

    }

    }

    Local do Arquivo no CD: CD-ROM:\curso\A Alomundo\alomundo.cs

    6. Saia do editor salvando o projeto;7. Compile o cdigo usando o compilador do C#, CSC.EXE, digitando o seguinte comando no

    prompt do DOS:

    C:\CSHARP\ALUMUNDO> csc alomundo.cs+

    8. Digite o comando DIR+ para ver se foi criado o arquivo ALOMUNDO.EXE9. Para executar a aplicao digite "alomundo"+

    NOTA: Caso o comando CSC no responda, que ele no est no PATH (caminho de busca) doWindows. Para adicionar use o comando:

    PATH %path%;C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322

    Suponha que o CSC.EXEse encontre nesta pasta.

    Veja que esta aplicao criada s encontramos sada de dados com o camando WriteLine().

    Constr u indo uma ap licao com parmetros

    Agora iremos criar uma pequena aplicao que ter parmetros(argumentos) de entrada e exibiro contedo deste argumento.

  • 8/12/2019 Programando Em C#

    8/38

    pg in a8

    usingSystem;

    classSistema

    {

    publicstaticvoidMain(String[] args){

    Console.WriteLine("Seja bem vindo, {0}!", args[0]);

    Console.WriteLine("Este o curso de C# por Carlos Vamberto");

    }

    }

    Local do Arquivo no CD: CD-ROM:\curso\B Parametros\argumentos.cs

    Constr u indo uma aplic ao c om entrada interativa

    Com esta aplicao saberemos como criar uma aplicao do tipo console(no teclado estilo DOS)com entrada de dados interativos (voc participa).

    usingSystem;

    classentrada

    {publicstaticvoidMain()

    {

    Console.Write("Digite seu nome: ");

    Console.Write("Bem vindo, {0}",Console.ReadLine());

    }

    }Local do Arquivo no CD Anexo: CD-ROM:\curso\C Entrada Interativa\entrada.cs

    Tipos de Dados

    Nesta seo passaremos a conhecer os tipos de dados encontrados nas linguagens deprogramao do .NET

    Boolean Tipo Lgico

    Este tipo aceita apenas dois valores: false(falso) ou true(verdadeiro)

    Veja exemplo da declarao da varivel e a atribuio de valores:

    usingSystem;

    classlogicos

    {

    publicstaticvoidMain()

    {

    boolativo = true;

    boolinativo = false;

    Console.WriteLine("Aqui mostrar o valor ativo : {0}",ativo);

    Console.WriteLine("Aqui mostrar o valor inativo: {0}",inativo);

    }

    }

    Local do Arquivo no CD: CD-ROM:\curso\D Tipos de Dados\a_boolean.cs

  • 8/12/2019 Programando Em C#

    9/38

    pg in a9

    Veja esta tabela contendo alguns tipos inteiros, tamanho e seus intervalos.

    Tipo bits Intervalo

    sbyte 8 -128at 127byte 8 0at 255short 16 -32768at 32767ushort 16 0at 65535int 32 -2147483648at 2147483647uint 32 0at 4294967295long 64 -9223372036854775808 at 9223372036854775807ulong 64 0at 18446744073709551615char 16 0at 65535

    Agora a tabela de tipos Reais (pontos flutuantes e tipos decimais)

    Tipo bits Preciso Intervalofloat 32 7 dgitos 1.5 x 10-45at 1.5 x 1038double 64 15-16 dgitos 5.0 x 10-324at 1.7 x 10308decimal 128 28-29 decimal 1.0 x 10-28at 7.9 x 1028

    Operadores

    Categoria Operador(es) AssociaoPrimrio (x) x.y f(x) a[x] x++ x

    new typeof sizeof checked uncheckedleft

    Unrio + - ! ~ ++x --x (T)x leftMultiplicidade * / % leftAditivo + - leftSubstituio > leftRelacional < > = is leftIgualdade == != rightAND Condicional && leftOR Condicional || leftXOR Condicional ^ left

    Exemplo trabalhando com operadores unrios

    usingSystem;

    classunario

    {

    publicstaticvoidMain()

    {

    // Declarao das variveis

    intunario = 0;

    intpreIncremento;

    intpreDecremento;

    intposIncremento;intposDecremento;

    intpositivo;

    intnegativo;

    sbytebitNao;

    boollogNao;

    // Incio do cdigo

    preIncremento = ++unario;

  • 8/12/2019 Programando Em C#

    10/38

    p g i n a10

    Console.WriteLine("Pr-incremento : {0}",preIncremento);

    Console.WriteLine("Unrio : {0}",unario);Console.WriteLine(" ");

    preDecremento = --unario;

    Console.WriteLine("Pr-decremento : {0}",preDecremento);Console.WriteLine("Unrio : {0}",unario);

    Console.WriteLine(" ");

    posDecremento = unario--;Console.WriteLine("Ps-decremento : {0}",posDecremento);

    Console.WriteLine("Unrio : {0}",unario);

    Console.WriteLine(" ");

    posIncremento = unario++;

    Console.WriteLine("Ps-incremento : {0}",posIncremento);

    Console.WriteLine("Unrio : {0}",unario);

    Console.WriteLine(" ");

    Console.WriteLine("Valor Final do Unrio: {0}",unario);

    Console.WriteLine(" ");

    positivo = -posIncremento;

    Console.WriteLine("Positivo : {0}",positivo);

    negativo = +posIncremento;

    Console.WriteLine("Negativo : {0}",negativo);

    Console.WriteLine(" ");

    bitNao = 0;

    bitNao = (sbyte)(~bitNao);

    Console.WriteLine("Bitwise : {0}",bitNao);

    Console.WriteLine(" ");

    logNao = false;

    logNao = !logNao;Console.WriteLine("No Lgico : {0}",logNao);

    Console.WriteLine(" ");

    }

    }

    Local do Arquivo no CD: CD-ROM:\curso\D Tipos de Dados\b_unarios.cs

    Exemplo de trabalhando com operadores binrios:

    usingSystem;

    classBinary

    {

    publicstaticvoidMain()

    { intx, y, resultado;

    floatfloatResult;

    x = 7;

    y = 5;

    resultado = x+y;

    Console.WriteLine("x+y: {0}", resultado);

    resultado = x-y;

    Console.WriteLine("x-y: {0}", resultado);

    resultado = x*y;

    Console.WriteLine("x*y: {0}", resultado);

  • 8/12/2019 Programando Em C#

    11/38

    p g i n a11

    resultado = x/y;

    Console.WriteLine("x/y: {0}", resultado);

    floatResult = (float)x/(float)y;

    Console.WriteLine("x/y: {0}", floatResult);

    resultado = x%y;

    Console.WriteLine("x%y: {0}", resultado);

    resultado += x;Console.WriteLine("resultado+=x: {0}", resultado);

    }

    }Local do Arquivo no CD: CD-ROM:\curso\D Tipos de Dados\c_binarios.cs

    Vetores

    Trabalhar com vetores muito similar na maioria das linguagens de programao. No C#simples declarar e atribuir valores a vetores.

    A sintaxe para a declarao de um array bem simples, coloca-se o tipo desejado e em seguidaos colchetes abrindo e fechando, o nome da varivel e a alocao de tamanho do vetor. Oexemplo abaixo declara um arrayde string unidimensional com 3 posies.

    usingSystem;

    classteste

    {

    publicstaticvoidMain()

    {// Declarao

    string[] vetNome = newstring[3];

    // Atribuio

    vetNome[0] = "Ana";

    vetNome[1] = "Pedro";

    vetNome[2] = "Maria";

    for(intx=0;x

  • 8/12/2019 Programando Em C#

    12/38

    p g i n a12

    }

    }

    curso\E Vetores\introducao2.cs

    No cdigo abaixo voc ver alguns exemplos trabalhando com vetores.

    usingSystem;

    classArray

    {

    publicstaticvoidMain(){

    int[] myInts = { 5, 10, 15 };

    bool[][] myBools = newbool[2][];

    myBools[0] = newbool[2];

    myBools[1] = newbool[1];

    double[,] myDoubles = newdouble[2, 2];string[] myStrings = newstring[3];

    Console.WriteLine("myInts[0]: {0}, myInts[1]: {1}, myInts[2]: {2}", myInts[0],

    myInts[1], myInts[2]);

    myBools[0][0] = true;

    myBools[0][1] = false;

    myBools[1][0] = true;

    Console.WriteLine("myBools[0][0]: {0}, myBools[1][0]: {1}", myBools[0][0],

    myBools[1][0]);

    myDoubles[0, 0] = 3.147;

    myDoubles[0, 1] = 7.157;

    myDoubles[1, 1] = 2.117;myDoubles[1, 0] = 56.00138917;

    Console.WriteLine("myDoubles[0, 0]: {0}, myDoubles[1, 0]: {1}", myDoubles[0,

    0], myDoubles[1, 0]);

    myStrings[0] = "Joe";

    myStrings[1] = "Matt";

    myStrings[2] = "Robert";

    Console.WriteLine("myStrings[0]: {0}, myStrings[1]: {1}, myStrings[2]: {2}",

    myStrings[0], myStrings[1], myStrings[2]);

    }

    }Local do Arquivo no CD: CD-ROM:\curso\E Vetores\vetores.cs

  • 8/12/2019 Programando Em C#

    13/38

    p g i n a13

    Captulo 3 - Trabalhando com Comandos Condicionais

    Neste captulo iremos aprender a trabalhar com condicionais para tratar partes de nossos cdigos.

    If ... els e

    A condicional mais usada em linguagens de programao o if(se)por ser fcil sua manipulao.

    A sintaxe desta condicional :

    if()

    {

    ;

    }

    Else // Seno{

    ;

    }

    Nas listas de condies, estas devem ser intercaladas por AND(&&) ou OR(||)...

    Veja no exemplo abaixo:

    usingSystem;

    classIfSelect

    {

    publicstaticvoidMain(){

    stringmyInput;intmyInt;

    Console.Write("Entre com um nmero e pressione ENTER: ");

    myInput = Console.ReadLine();

    myInt = Int32.Parse(myInput);

    // Deciso simples com brackets

    if(myInt > 0)

    {

    Console.WriteLine("Seu nmero {0} maior que zero.", myInt);

    }

    // Deciso simples sem brackets

    if(myInt < 0)

    Console.WriteLine("Seu nmero {0} menor que zero.", myInt);

    // Deciso com Senoif(myInt != 0)

    {

    Console.WriteLine("Seu nmero {0} no igual a zero.", myInt);

    }

    else

    {

    Console.WriteLine("Seu nmero {0} igual a zero.", myInt);

    }

    // Mltipla deciso com E e OU

    if(myInt < 0 || myInt == 0)

    {

    Console.WriteLine("Seu nmero {0} menor ou igual a zero.", myInt);

    }

    elseif(myInt > 0 && myInt

  • 8/12/2019 Programando Em C#

    14/38

    p g i n a14

    {

    Console.WriteLine("Seu nmero {0} est entre 1 e 10.", myInt);}

    elseif(myInt > 10 && myInt 20 && myInt

  • 8/12/2019 Programando Em C#

    15/38

    p g i n a15

    Console.WriteLine("Seu nmero {0}.", myInt);

    break;case3:

    Console.WriteLine("Seu nmero {0}.", myInt);

    break;

    default:Console.WriteLine("Seu nmero {0} no est entre 1 e 3.", myInt);

    break;

    }

    // Label DECIDE

    decide:

    Console.Write("Digite \"continuar\" para continuar or \"sair\" para sair: ");

    myInput = Console.ReadLine();

    // switch com tipo string

    switch(myInput)

    {

    case"continuar":

    gotobegin;

    case"sair":

    Console.WriteLine("Tchau.");break;

    default:

    Console.WriteLine("Sua entrada {0} est incorreta.", myInput);

    gotodecide;

    }

    }

    }Local do Arquivo no CD: CD-ROM:\curso\F Condicionais\b_caso.cs

    Captulo 4 - Trabalhando com Comandos de Repetio

    Existe vrios tipos de comandos de repetio e eles so:

    while

    Sintaxe:

    while()

    {

    ...

    ...

    }

    No exemplo abaixo, faremos um loop usando o comando while, para escrever nmeros entre 0 e

    9.

    usingSystem;

    classWhileLoop

    {

    publicstaticvoidMain()

    {

    intmyInt = 0;while(myInt < 10)

    {

    Console.Write("{0} ", myInt);

    myInt++;

    }

    Console.WriteLine();

    }

  • 8/12/2019 Programando Em C#

    16/38

    p g i n a16

    }Local do Arquivo no CD: CD-ROM:\curso\G Loop\a_while.cs

    do ... while

    O comando DO ..W h i l econstri um lao semelhante ao do W h i le, mas ele s verifica a condiodepois de executar as expresses.

    Aqui est a sintaxe:

    do{

    ...

    ;

    ...

    } while();

    Agora veremos um exemplo usando simultaneamente comandos condicionais sw i t c h ei fcom ode repetio d o.

    usingSystem;

    classDoLoop

    {

    publicstaticvoidMain()

    {

    stringmyChoice;

    do

    {

    // Imprime o Menu

    Console.WriteLine("Meu Livro de Endereos\n");

    Console.WriteLine("A - Adicionar");

    Console.WriteLine("D - Deletar");

    Console.WriteLine("M - Modificar");

    Console.WriteLine("V - Visualizar");

    Console.WriteLine("S - Sair\n");

    Console.WriteLine("Choice (A,D,M,V,or S): ");

    // Obtem a escolha do usurio

    myChoice = Console.ReadLine();

    // Trata a escolha do usurio

    switch(myChoice)

    {

    case"A":

    case"a":

    Console.WriteLine("Voc escolheu ADICIONAR.");

    break;

    case"D":

    case"d":

    Console.WriteLine("Voc escolheu DELETAR.");

    break;

    case"M":

    case"m":

    Console.WriteLine("Voc escolheu MODIFICAR.");break;

    case"V":

    case"v":

    Console.WriteLine("Voc escolheu Visualizar.");

    break;

    case"S":

    case"s":

  • 8/12/2019 Programando Em C#

    17/38

    p g i n a17

    Console.WriteLine("Tchau.");

    break;default:

    Console.WriteLine("{0} no uma opo vlida", myChoice);

    break;

    }

    // D uma pausa para permitir que o usurio veja o resultado

    Console.Write("Pressione ENTER para continuar...");

    Console.ReadLine();Console.WriteLine();

    } while(myChoice != "S" && myChoice != "s");

    // Repete at o usurio querer sair

    }

    }

    Local do Arquivo no CD: CD-ROM:\curso\G Loop\b_do.cs

    for

    Este comando de repetio, diferente do anterior que executa o procedimento vrias vezes at

    que uma condio seja verdadeira, aqui ser executado um nmero previamente determinado devezes.

    Veja a sintaxe:

    for(, , )

    {

    ...

    ...

    }

    Construa o exemplo abaixo:

    usingSystem;

    classForLoop

    {publicstaticvoidMain()

    {

    for(inti=0; i < 20; i++)

    {

    if(i == 10)

    break;

    if(i % 2 == 0)

    continue;

    Console.Write("{0} ", i);

    }

    Console.WriteLine();

    }}

    Local do Arquivo no CD: CD-ROM:\curso\G Loop\c_for.cs

    for each

    J neste comando de repetio podemos varrer todos os elementos de um vetor seja de objeto oude tipos primitivos. Veja a sintaxe:

    for each( in)

    {

    ...

    ...

    }

  • 8/12/2019 Programando Em C#

    18/38

    p g i n a18

    Veja agora um exemplo usando o comando f o r . . . e a c honde se varre um vetor de strings eescreve no console o contedo de cada posio:

    usingSystem;

    classForEachLoop

    {

    publicstaticvoidMain()

    {

    string[] names = {"Cheryl", "Joe", "Matt", "Robert"};

    foreach(stringperson innames){

    Console.WriteLine("{0} ", person);

    }

    }

    }Local do Arquivo no CD: CD-ROM:\curso\G Loop\d_foreach.cs

    Captulo 5 - Mtodos

    Se voc no sabe, o M a in ( )que codificamos em nossos exemplos um mtodo de classe.

    O mtodo na verdade a execuo de uma rotina que est contida em uma classe. Desta forma,poderemos construir vrias funcionalidades para uma nica classe, para que esta fique mais fcilde futuras correes no nvel de cdigo.

    Agora veja o cdigo fonte da classe Aluno:

    usingSystem;

    classAluno{

    stringnome;

    publicstaticvoidMain()

    {

    // Instanciando o objeto ALUNO

    Aluno aluno = newAluno();

    // Executando o mtodo setNome para colocar o nome do Aluno

    aluno.setNome("Carlos");

    // Escrevendo o nome do aluno no console usando o mtodo getNome

    Console.WriteLine(aluno.getNome());

    }

    voidsetNome(stringn)

    {

    nome = n;

    }

    stringgetNome()

    {

    returnnome;}

    }Local do Arquivo no CD: CD-ROM:\curso\H Mtodo\a_metodo.cs

  • 8/12/2019 Programando Em C#

    19/38

    p g i n a19

    Outro exemplo da classe A lu n osendo que esta ser instanciada pela classe que conter o mtodoMain().

    usingSystem;

    classAluno

    {

    protectedstringnome;

    publicvoidsetNome(stringn){

    nome = n;

    }

    publicstringgetNome()

    {

    returnnome;

    }

    protectedvoiddelNome()

    {

    nome = "";

    }

    publicvoiddeleta()

    {

    this.delNome();

    }

    }

    classMetodo

    {publicstaticvoidMain()

    { // Instanciando o objeto ALUNO

    Aluno aluno = newAluno();

    // Executando o mtodo setNome para colocar o nome do Aluno

    aluno.setNome("Carlos");

    // Escrevendo o nome do aluno no console usando o mtodo getNome

    Console.WriteLine(aluno.getNome());

    // Excluir o contedo do nome

    aluno.deleta();

    }

    }Local do Arquivo no CD: CD-ROM:\curso\H Mtodo\b_metodo.cs

    Perceba que os mtodos da classe A l u noesto agora com a palavra reservada p u b l i cno incio.Isto faz com que o mtodo seja enxergado por outro mtodo.

    Os mtodos podem ser:

    public Mtodos que permitem que outras classes possam acess-los; private Mtodos que inibe que outras classes possam acess-los; protected Mtodos que permitem que apenas a classe e as subclasses faam acesso a

    eles.

    NOTA: O p u b li c, p r iv at eep r o t ec t edpodem ser usados tambm em atributos (propriedades)das classes como mostrado no exemplo acima no atributo no m e.

  • 8/12/2019 Programando Em C#

    20/38

    p g i n a20

    Captulo 6 - Namespace

    N am esp ac e um programa em C#que foi desenvolvido para ajud-lo a organizar seusprogramas. Fornece tambm auxlio em evitar classes de mesmo nome dentro de umN am esp ac e. bom usar N am e sa p ac eem seu cdigo, pois, ele facilitar a reutilizao de umcdigo j implementado em outro projeto.

    Um namespaceno corresponde a um nome de arquivo ou diretrio como no Java. Voc poderenomear os arquivos e diretrios para ajud-lo a organizar seu projeto mais sem aobrigatoriedade.

    Vamos agora criar o nosso primeiro namespaceusando o alomundoque criamos anteriormente:

    usingSystem;

    // Criando o nosso primeiro name space com o nome "ns"

    namespacens

    {

    // criando a classe "alomundo" dentro do namespace

    classalomundo

    {

    publicstaticvoidMain()

    {

    Console.WriteLine("Alo mundo !!!");}

    }

    }Local do Arquivo no CD: CD-ROM:\curso\I Namespace\a_namespace.cs

    Podemos tambm ter n am e sp a cedentro de outro n am e sp ac ecom as classes implementadas,conforme exemplo abaixo:

    usingSystem;

    // Criando o nosso primeiro name space com o nome "ns"

    namespacens

    {

    namespacebrasil{

    // criando a classe "alomundo" dentro do namespace

    classalomundo

    {

    publicstaticvoidMain(){

    Console.WriteLine("Alo mundo !!!");

    }

    }

    }

    }Local do Arquivo no CD: CD-ROM:\curso\I Namespace\b_namespace.cs

    Tambm poderemos construir os N am e sp ac esdentro de outro, sendo intercalados pelo ponto(.). Veja o exemplo que segue:

    usingSystem;

    // Criando o nosso primeiro name space com o nome "ns"

  • 8/12/2019 Programando Em C#

    21/38

    p g i n a21

    namespacens.brasil

    {// criando a classe "alomundo" dentro do namespace

    classalomundo

    {

    publicstaticvoidMain(){

    Console.WriteLine("Alo mundo !!!");

    }

    }}

    Local do Arquivo no CD: CD-ROM:\curso\I Namespace\c_namespace.cs

    Agora vamos dar mais profissionalismo no uso do N am e sp ac e. Iremos construir um cdigo quefaz chamada a um N am e sp ace.

    usingSystem;

    // Criando o nosso primeiro name space com o nome "ns"

    namespacens{

    namespacemensagem

    {

    // criando a classe "alomundo" dentro do namespace

    classalomundo

    {

    publicstaticvoidalo()

    {

    Console.WriteLine("Alo mundo !!!");

    }

    }

    }

    classmandamensagem

    {publicstaticvoidMain()

    {

    mensagem.alomundo.alo();

    }}

    }Local do Arquivo no CD: CD-ROM:\curso\I Namespace\d_namespace.cs

    Agora construiremos um cdigo que ir fazer uma chamada ao um N am esp aceatravs dediretiva:

    // Diretivas

    usingSystem;

    usingns.mensagem;

    // Criando o nosso primeiro name space com o nome "ns"

    namespacens

    {

    namespacemensagem

    {

    // criando a classe "alomundo" dentro do namespace

    classalomundo

    {

    publicstaticvoidalo()

    {

    Console.WriteLine("Alo mundo !!!");

    }

    }

    }

  • 8/12/2019 Programando Em C#

    22/38

    p g i n a22

    }

    classmandamensagem{

    publicstaticvoidMain()

    {

    alomundo.alo();}

    }

    Local do Arquivo no CD: CD-ROM:\curso\I Namespace\e_namespace.cs

    Perceba que no exemplo acima, a classe m an d am e n sag emfica fora do N am esp ace, e por isto que faremos referencia a ele atravs do u s in gno incio do cdigo.

    Podemos tambm usar as diretivas com apelidos (alias) a uma determinada classe. Veja noexemplo abaixo:

    usingSystem;

    usingmens = ns.mensagem.alomundo; // Aqui est o apelido mens

    // Criando o nosso primeiro name space com o nome "ns"

    namespacens

    {

    namespacemensagem

    {

    // criando a classe "alomundo" dentro do namespace

    classalomundo

    {

    publicstaticvoidalo()

    {

    Console.WriteLine("Alo mundo !!!");

    }

    }

    }

    }classmandamensagem

    {

    publicstaticvoidMain()

    {

    mens.alo();

    }

    }

    Local do Arquivo no CD: CD-ROM:\curso\I Namespace\f_namespace.cs

    Captulo 7 - Classes

    In tr oduo

    Desde que comeamos este tutorial trabalhamos com classes. Agora voc ter um sentido melhorna definio de uma classe e conhecer novos membros que compe uma classe.

    Cada classe necessita de um construtor (alocador de memria), e ela automaticamentechamada quando a classe instanciada criando um objeto. Os construtores no retornam valorese no impositivo ter o mesmo nome da classe.

    Vamos criar agora uma classe A lu n ocom um construtor:

    usingSystem;

    classAluno

    {

  • 8/12/2019 Programando Em C#

    23/38

    p g i n a23

    stringnome;

    // Criando o Mtodo Construtor

    publicAluno(stringn)

    {

    nome = n;}

    // Mtodo setNome : Coloca valor no atributo nome

    publicvoidsetNome(stringn){

    nome = n;

    }

    // Mtodo getNome : Retorna o valor do atributo nome

    publicstringgetNome()

    {

    returnnome;

    }

    }

    classexemplo

    {

    publicstaticvoidMain()

    {

    // Cria o objeto "alu" que a instncia da classe "Aluno"

    Aluno alu = newAluno("Carlos");

    Console.WriteLine("Nome do aluno {0}",alu.getNome());

    alu.setNome("Pedro");

    Console.WriteLine("Nome do aluno agora {0}",alu.getNome());

    }

    }Local do Arquivo no CD: CD-ROM:\curso\J Classes\a_classe.cs

    Her ana

    A herana um dos conceitos primrios de programao orientada a objeto. Isto faz com que oreuso de cdigo seja feito em nvel de classe.

    Uma vez implementando uma classe herdada de outra, esta nova classe herdar todos osatributos e mtodos da classe pai e, poder, ainda, ter, tambm, seus prprios atributos emtodos.

    usingSystem;

    // Criando a classe "Pessoa"

    publicclassPessoa

    {

    publicstringnome;publicintidade;

    // Criando o construtor "Pessoa"

    publicPessoa()

    {

    Console.WriteLine("Foi criando um Objeto Pessoa");

    }

    }

    // Criando a classe "Aluno" que herda "Pessoa"

    publicclassAluno : Pessoa

    {

    publicstringmatricula;

  • 8/12/2019 Programando Em C#

    24/38

    p g i n a24

    // Criando o construtor "Aluno"publicAluno()

    {

    Console.WriteLine("Foi criado um Objeto Aluno");

    }}

    // Iniciando a aplicao

    classexemplo{

    publicstaticvoidMain()

    {

    // Criando uma instncia da classe "Pessoa"

    Pessoa pessoa = newPessoa();

    pessoa.nome = "Carlos";

    pessoa.idade = 30;

    Console.WriteLine("Pessoa: Nome={0}; Idade={1}",pessoa.nome,pessoa.idade);

    Console.WriteLine();

    // Criando uma instncia da classe "Aluno"

    Aluno aluno = newAluno();

    aluno.nome = "Marcos";

    aluno.idade = 31;

    aluno.matricula = "1234";

    Console.WriteLine("Aluno: Nome={0}; Idade={1}; Matrcula={2}",

    aluno.nome,aluno.idade,aluno.matricula);

    Console.WriteLine();

    }

    }Local do Arquivo no CD: CD-ROM:\curso\J Classes\b_heranca.cs

    Neste novo exemplo trabalharemos em um cdigo que mostra uma herana entre classes quepossuem construtores distintos:

    usingSystem;

    // Criando a classe pblica "Pessoa"

    publicclassPessoa

    {

    // Atributos

    publicstringnome;

    // Construtor

    publicPessoa()

    {

    // Nada a fazer}

    // Construtor

    publicPessoa(stringn)

    {

    this.nome = n;

    }

    }

    // Criando a classe pblica "Aluno" que herda caractersticas da classe "Pessoa"

    publicclassAluno : Pessoa

    {

    // Adiciona outro atributo

    publicstringmatricula;

  • 8/12/2019 Programando Em C#

    25/38

    p g i n a25

    // Construtor com base na herana

    publicAluno(stringm, stringn) : base(n){

    this.matricula = m;

    }

    }

    // Classe para instanciar os objetos e mostrar os resultadosclassExemplo

    {

    publicstaticvoidMain()

    {

    // Instanciando a classe Pessoa

    Pessoa pessoa = newPessoa("Carlos");

    Console.WriteLine("Pessoa com nome {0}", pessoa.nome);

    // Instanciando a classe Aluno

    Aluno aluno = newAluno("1234","Ana");

    Console.WriteLine("Aluno com nome {0} e matrcula {1}", aluno.nome, aluno.matricula);}

    }Local do Arquivo no CD: CD-ROM:\curso\J Classes\C_heranca.cs

    Captulo 8 - Polimorfismo

    Um outro conceito preliminar na POO(Programao Orientada a Objeto) o polimorfismo. Suaprincipal funo tornar possvel criar mtodos de mesmo nome em classes diferentes.

    Veja um exemplo de polimorfismo usando herana de classes:

    usingSystem;

    // Classe : Ponto

    publicclassPonto{

    publicvirtualvoiddesenhar()

    {

    Console.WriteLine("Mtodo 'desenhar' do objeto 'Ponto'");

    }

    }

    // Classe : Linha

    classLinha : Ponto

    {publicoverridevoiddesenhar()

    {

    Console.WriteLine("Mtodo 'desenhar' do objeto 'Linha'");

    }

    }

    // Classe : Circulo

    classCirculo : Ponto

    {

    publicoverridevoiddesenhar()

    {

    Console.WriteLine("Mtodo 'desenhar' do objeto 'Circulo'");

    }

    }

  • 8/12/2019 Programando Em C#

    26/38

    p g i n a26

    classteste

    {

    publicstaticvoidMain()

    {// Intncia da classe Ponto

    Ponto ponto = newPonto();

    ponto.desenhar();

    // Intncia da classe Linha

    Linha linha = newLinha();

    linha.desenhar();

    // Intncia da classe Circulo

    Circulo circulo = newCirculo();

    circulo.desenhar();

    }

    }Local do Arquivo no CD: CD-ROM:\curso\K Polimorfismo\a_polimorfismo.cs

    Captulo 9 - Struts (Suportes)

    Um st r u tpermite que voc crie propriedades do tipo similar aos tipos internos da classe.

    Veja um exemplo abaixo:

    usingSystem;

    classPonto{

    publicintx;publicinty;

    // Construtor

    publicPonto(intx, inty)

    {

    this.x = x;

    this.y = y;

    }

    // Mtodo Adicionar

    publicPonto Adicionar(Ponto ponto)

    {

    Ponto novoponto = newPonto(0,0);

    novoponto.x = ponto.x + x;novoponto.y = ponto.y + y;

    returnnovoponto;

    }

    }

    classExemplo

    {

    publicstaticvoidMain()

    {

    Ponto p1 = newPonto(1,1);

    Ponto p2 = newPonto(2,2);

    Ponto p3;

    p3 = p1.Adicionar(p2);

  • 8/12/2019 Programando Em C#

    27/38

    p g i n a27

    Console.WriteLine("p3 = {0},{1}", p3.x, p3.y);

    }}

    Local do Arquivo no CD: CD-ROM:\curso\L Struts\a_strut.cs

    Perceba que no cdigo acima no mtodo Ad ic i on arfoi passado como parmetro para outroobjeto Pon t o.

    Captulo 10 - Interface

    Devemos entender uma I n t e r fa cecomo uma classe, contudo sem qualquer implementao. Anica coisa que contm na interface so as definies dos eventos, indexadores, mtodos e/oupropriedades. A razo de ela existir pelo fato dela poder ser herdada por classese struts.

    Ento, por que as interfaces so boas se elas no tem funcionalidade na implementao? porque elas so boas para unir arquiteturas plug-n-play (est presente, est funcionando) queusam componentes intercambiados. Com todos os implementos dos componentes intercambiadosde alguma interface, eles pode ser usados sem a necessidade de uma programao extra. Ainterface fora que cada componente exponha seus membros pblicos que podero ser usados.

    Veja um breve exemplo abaixo que usa interface dentro de outra interface:

    usingSystem;

    // Criando Interface : IInterfaceMae

    interfaceIInterfaceMae

    {

    voidMetodoMae();

    }

    // Criando Interface : IMinhaInterfaceinterfaceIMinhaInterface : IInterfaceMae

    {

    voidMeuMetodo();

    }

    //Criando Classe para usar as interfaces atravs de herana

    classComponente : IMinhaInterface

    {

    publicvoidMeuMetodo()

    {

    Console.WriteLine("Mtodo do IMinhaInterface foi chamado");

    }

    publicvoidMetodoMae()

    { Console.WriteLine("Mtodo do IInterfaceMae foi chamado");

    }

    }

    // Criando Classe para testar a instncia da classe que usa interface e o mtodo.

    classTestador{

    publicstaticvoidMain()

    {

    Componente componente = newComponente();

    componente.MeuMetodo();

    componente.MetodoMae();

    }

    }

    Local do Arquivo no CD: CD-ROM:\curso\M Interfaces\a_interface.cs

  • 8/12/2019 Programando Em C#

    28/38

    p g i n a28

    Captulo 11 Tratamento de Excees

    As excees so tratamentos de erros que acontecem em seus programas para que no sejapassado para o usurio final. Na maioria das vezes, voc pode detectar quais locais no seu cdigoque pode causar erros. Voc tem sempre que est pensando em tratamentos de excees, poisdeixa seu programa mais seguro e sustentvel.

    Quando uma exceo deve ser implementada? Muitas vezes voc capaz de visualizar trechos decdigos que possam gerar algum erro como, por exemplo: Erro de I/O (E/S); erro de acesso abanco de dados; erros de acesso memria; etc. Nestes trechos de cdigos devemos colocar oTratamento de Excees para que seu programa no seja abortado e/ou que no passe umainformao tcnica fora do alcance do usurio final.

    Quando uma exceo ocorre, elas so chamadas de t h r o w n. O t h r o w natual um objeto que

    derivado da classe Sy s te m .Exc ep t ion.

    A classe Sy s t em .Exc ep t ioncontm alguns mtodos e propriedades para obter informaes sobreo erro que foi gerado. Por exemplo o M es sa g e uma propriedade que contm um resumo doerro gerado; St ac k Tr ac eretorna informaes do erro ocorrido; o mtodo ToS t r i n g()retornauma descrio completa do erro ocorrido.

    Existem vrios tipos de Excees. Por exemplo, na classe Sy st em .I O. Fi le o mtodoOpenR ea d (), poder ter as seguintes excees:

    SecurityException; ArgumentException; ArgumentNullxEception; PathTooLongException; DirectoryNotFoundException; UnauthrizedAccessException; FileNotFoundException; NotSupportedException.

    Sintaxe de Tratamento do uso d o try ...catch

    Quando fazemos um tratamento de exceo, podemos tratar vrios erros em apenas umaestrutura. Os tratamentos mais ambguos devem ficar entre os ltimos e os mais especficosdevem ficar entre os primeiros. Vejamos um exemplo usando o Sy st em . I O.Fi le:

    usingSystem;

    usingSystem.IO;

    classexemplo

    {

    publicstaticvoidMain()

    {

    try

    {

    // Isto causar uma exceo

    File.OpenRead("\\teste\\ArquivoNoExistente.txt");

    }

    catch(FileNotFoundException e)

    {

  • 8/12/2019 Programando Em C#

    29/38

    p g i n a29

    Console.WriteLine();

    Console.WriteLine("Erro pelo FileNotFoundException");Console.WriteLine("-------------------------------------------");

    Console.WriteLine(e.ToString());

    Console.WriteLine();

    }catch(DirectoryNotFoundException e)

    {

    Console.WriteLine();

    Console.WriteLine("Erro pelo DirectoryNotFoundException");Console.WriteLine("-------------------------------------------");

    Console.WriteLine(e.ToString());

    Console.WriteLine();

    }

    catch(Exception e)

    {

    Console.WriteLine();

    Console.WriteLine("Erro pelo Exception");

    Console.WriteLine("-------------------------------------------");

    Console.WriteLine(e.ToString());

    Console.WriteLine();}

    }

    }Local do Arquivo no CD: CD-ROM:\curso\N Exceptions\a_exception.cs

    Captulo 12 - Introduo a ADO.NET (Banco de Dados)

    O ADO.NET uma nova filosofia de conectividade com banco de dados. Ela no compatvel coma do ADO (Access Data Object). O ADO.NET a ltima implementao da estratgia doUn i v e r sa l D a t a Acces sda Microsoft.

    A Microsoft est posicionando o ADO.NETpara ser a tecnologia preliminar do acesso dos dadospara a estrutura do .NET.

    A Microsoft tem dedicado um bocado de trabalho no acesso a dados. Ela tem realizado um grandenmero de mudanas na tecnologia de acesso a dados, e o ADO .NET no outra coisa senomais um destes avanos. Os desenvolvedores descobriro toda uma nova forma de criaraplicaes orientadas para banco de dados. Combinando o poder acesso a dados, XML e da .NETFramework, a Microsoft apresentou sua mais poderosa tecnologia de acesso a dados at hoje.

    Vantagens do ADO.NET

    Escalabilidade - pelo fato de o DataSetser baseado em acesso a dados desconectados, por teruma arquitetura baseada no XML, o tempo de manipulao dos dados no banco de dados torna-se mnimo. Portanto, mesmo com um nmero simultneo de acesso maior, a aplicao conseguegarantir uma boa escalabilidade;

    Performance - no ADO.NETa transmisso de dados feita em XML, com isso possvel acomunicao com diversas plataformas e aplicativos;

    Segurana- um firewall(bloqueadores de acessos externos)no consegue bloquear umarquivo texto. Portanto como o ADO.NET baseado em XML, as portas dos firewallsno somais problemas.

  • 8/12/2019 Programando Em C#

    30/38

    p g i n a30

    Classes do ADO.NET

    System.Data System.Data.SqlClient System.Data.OleDb System.Data.SqlTypes

    Esquema

    Provedores de Acesso a Dados

    OleDb

    A Plataforma .NETcriou esta classe com vrios provedores para o acesso dequalquer plataforma, como: SQL Server, Oracle e Access.

    Este provedor pertence classe System.Data.OleDbe suas principaisClasses so:

    OleDbConnection Define a abertura da conexo; OleDbCommand Define a instruo SQL a ser executada; OleDbDataReader Define somente para leitura um conjunto de dados; OleDbDataAdapter Define a conexo a ser usada para preencher um Dat aSe te

    representa um conjunto de comandos de dados.

    Esta classe possue os seguintes provedores:

    SQLOLEDB Microsoft OLE DB Provider for SQL Server; MSDAORA Microsoft OLE DB Provider for Oracle; Microsoft.Jet.OLEDB.4.0 OLE DB Provider for Microsft Jet.

    APLICAO (Web, Desktop, Mbile, etc)

    ADO.NET

    OLE DB

    ODBC SQL Oracle etc

  • 8/12/2019 Programando Em C#

    31/38

    p g i n a31

    SqlClient

    Este provedor para o acesso exclusivo do SQL Server. Pertence a classeSystem.Data.SqlCliente suas principais Classes so:

    SqlConnection Define a abertura da conexo; SqlCommand Define a instruo SQL a ser executada; SqlDataReader Define somente para leitura um conjunto de dados; SqlDataAdapter Define a conexo a ser usada para preencher um DataSet, e

    representa um conjunto de comandos de dados.

    NOTA: Se a aplicao desenvolvida utiliza o banco de dados SQLServer 7.0 ou superior, altamente recomendvel o uso do provedor SQL.

    DataSet

    O ADO.NETbaseia-se no DataSet. Esse objeto um conceito completamente novo parasubstituir o tradicional Recordsetdo ADO.

    O DataSet um armazenamento de dados simples residente na memria, que fornece ummodelo de programao consistente de acesso a dados, independentemente do tipo de dados.

    Diferentemente do RecordSet, o DataSetmantm conjuntos completos de dados, incluindorestries, relacionamentos e at mltiplas tabelas de uma vez, todos estes armazenados namemria do computador.

    Podemos afirmar tambm que os componentes do DataSetforam desenvolvidos para manipulardados com mais rapidez, sendo possvel executar comandos de leitura, alterao de dados,s t o r ed p ro ce d u r ese enviar ou receber informaes parametrizadas.

    J que todas as linhas da seleo so transmitidas de uma vez para a memria, preciso tercuidado neste aspecto importante para no comprometer a performance, sobrecarregando amemria e a rede.

    Segundo o autor Amrico Damasceno Junior o SELECTque voc cria tem que ser muito bemestudado para termos um objeto tipo DataSetde, no mximo, uns 100 Kbytes (isso daria umas1000 linhas de 100 dgitos mais ou menos). Mesmo assim, a uma velocidade de 3Kbytes/segundo(que o mximo que geralmente se consegue numa hora boa de Internet com um modem de56 Kbits/segundo), seriam necessrios 30 segundos para o DataSetir de uma maquina paraoutra.

    O ideal um objeto tipo DataSetde uns 5Kbytes (50 linhas de 100 dgitos mais ou menos) quepara uma transmisso a 1Kbyte/segundo demandaria aceitveis 5 segundos.

  • 8/12/2019 Programando Em C#

    32/38

    p g i n a32

    Conexo com Banco de Dados

    Vamos agora ver alguns exemplos de conexo com Banco de dados usando o OleDbe o SqlClient.

    OleDB

    usingSystem.Data.OleDb;

    classbanco

    {

    publicstaticvoidMain()

    {

    stringstrConexao = "Provider=SQLOLEDB;Server=Servidor;"

    + "Database=NorthWind;User id=sa;pwd=Senha";

    OleDbConnection conn = newOleDbConnection(strConexao);

    conn.Open();

    }

    }

    SqlClient

    usingSystem.Data.SqlClient;

    classbanco

    {

    publicstaticvoidMain()

    {

    stringstrConexao = "DataSource=Servidor;User id=sa;pwd=Senha;"+ "Initial Catalog=Northwind";

    SqlConnection conn = newSqlConnection(strConexao);

    conn.Open();

    }}

    Trabalhando c om Sq lComm and e SqlDataReader

    Vejamos um exemplo de conexo com uma base de dados em SQL Serveronde armazenaremosos dados da consulta dentro de um Dat aRea d er. O banco de dados que escolhemos oNorthwind, pois ele um banco de dados quem j vem com o SQL Serverpara demonstrao.

    usingSystem;

    usingSystem.Data;

    usingSystem.Data.SqlClient;

    namespaceMsdnAA

    {

    classAdoNetApp

    {

    staticvoidMain (string[] args)

    {

    stringstrConexao = "Server=wxp-01;Initial Catalog=Northwind;user id=sa";

  • 8/12/2019 Programando Em C#

    33/38

    p g i n a33

    SqlConnection conn = newSqlConnection(strConexao);

    conn.Open();

    SqlCommand comm = newSqlCommand("select * from customers",conn);

    SqlDataReader dr = comm.ExecuteReader();

    for(inti = 0; i < dr.FieldCount; i++)

    {

    Console.Write("{0},", dr.GetName(i));}

    Console.WriteLine();

    while(dr.Read())

    {

    for(inti = 0; i

  • 8/12/2019 Programando Em C#

    34/38

    p g i n a34

    dr.Close();

    conn.Close();}

    }

    }

    Local do Arquivo no CD: CD-ROM:\curso/O Database/b_database.cs

    Inclu indo Dados

    Veremos um exemplo de incluso de dados em uma tabela usando o objeto Sq lCom m an ddoSQL.

    usingSystem;

    usingSystem.Data;

    usingSystem.Data.SqlClient;

    classIncluir

    {

    publicstaticvoidMain(){

    // Criando a variveis para incluso da tabela CATEGORIAS

    stringNome;

    stringDescricao;

    // Solicitando o Nome e a Descrio

    Console.WriteLine();

    Console.WriteLine("Incluso de Categorias");Console.WriteLine("----------------------------------");

    Console.Write("Nome : ");

    Nome = Console.ReadLine();

    Console.Write("Descrio: ");

    Descricao = Console.ReadLine();

    Console.WriteLine("----------------------------------");

    Console.WriteLine();Console.WriteLine("Fazento a incluso");

    try

    {

    // Criando a Conexo com o Servidor e o Banco de dados

    stringstrCnx = "Server=wxp-01;Initial Catalog=Northwind;user id=sa";

    stringstrCmm = "INSERT INTO Categories (CategoryName,Description)"

    + " values ('" + Nome + "','" + Descricao + "')";

    Console.WriteLine("String de Incluso Criada:");

    Console.WriteLine(strCmm);

    Console.WriteLine();

    Console.WriteLine("Fazendo a conexo com o banco e dados");

    SqlConnection conn = newSqlConnection(strCnx);

    conn.Open();

    Console.WriteLine("Criando um comando de incluso em SQL");

    SqlCommand comm = newSqlCommand(strCmm,conn);

    Console.WriteLine("Executando o comando de incluso");

    comm.ExecuteNonQuery();

    Console.WriteLine();Console.WriteLine("Includo com sucesso");

    Console.WriteLine();

    conn.Close();

    }

    catch(Exception ex)

    {

    Console.WriteLine();

  • 8/12/2019 Programando Em C#

    35/38

    p g i n a35

    Console.WriteLine("ERROR");

    Console.WriteLine("-----------------");Console.WriteLine("Erro ao tentar incluir");

    Console.WriteLine(ex.ToString());

    Console.WriteLine("-----------------");

    }}

    }

    curso/O Database/c_incluir.cs

    Alterando Dados

    Aqui faremos uma listagem de todas as categorias cadastradas da tabela Cat eg or i eseescolheremos uma atravs do campo CategoryIdpara realizar sua alterao.

    usingSystem;

    usingSystem.Data;

    usingSystem.Data.SqlClient;

    classIncluir

    {

    publicstaticvoidMain()

    {

    // Criando a variveis para alterao da tabela CATEGORIAS

    stringId;

    stringNome;

    stringDescricao;

    stringstrCnx = "Server=wxp-01;Initial Catalog=Northwind;user id=sa";

    stringstrCmm;

    SqlConnection conn;

    SqlCommand comm;

    // Listando as categoriastry

    {

    strCmm = "select CategoryID,CategoryName,Description from Categories";

    conn = newSqlConnection(strCnx);

    conn.Open();

    comm = newSqlCommand(strCmm, conn);

    SqlDataReader dr = comm.ExecuteReader();

    Console.WriteLine();

    Console.WriteLine("L I S T A G E M");

    Console.WriteLine("---------------");

    while(dr.Read())

    {

    Console.Write("[{0}] [{1}] [{2}]",dr[0],dr[1],dr[2]);

    Console.WriteLine();

    }

    Console.WriteLine("---------------");

    conn.Close();

    }

    catch(Exception e)

    {

    Console.WriteLine();

    Console.WriteLine("ERROR");

    Console.WriteLine("-----------------");

    Console.WriteLine("Erro ao tentar listar");

  • 8/12/2019 Programando Em C#

    36/38

    p g i n a36

    Console.WriteLine(e.ToString());

    Console.WriteLine("-----------------");}

    Console.Write("Digite o CategoryID para a alterao: ");

    Id = Console.ReadLine();

    // Solicitando o Nome e a Descrio

    Console.WriteLine();

    Console.WriteLine("Alterao de Categorias (Digite os novos valores)");Console.WriteLine("---------------------------------------------------");

    Console.Write("Nome : ");

    Nome = Console.ReadLine();

    Console.Write("Descrio: ");

    Descricao = Console.ReadLine();

    Console.WriteLine("----------------------------------");

    Console.WriteLine();

    Console.WriteLine("Fazendo a alterao");

    try

    {// Criando a Conexo com o Servidor e o Banco de dados

    strCmm = "UPDATE Categories set CategoryName='"+Nome+"',"

    +"Description='"+Descricao+"' where CategoryID="+Id;

    Console.WriteLine("String de Alterao Criada:");

    Console.WriteLine(strCmm);

    Console.WriteLine();

    Console.WriteLine("Fazendo a conexo com o banco e dados");

    conn = newSqlConnection(strCnx);

    conn.Open();

    Console.WriteLine("Criando um comando de alterao em SQL");

    comm = newSqlCommand(strCmm,conn);

    Console.WriteLine("Executando o comando de alterao");

    comm.ExecuteNonQuery();

    Console.WriteLine();

    Console.WriteLine("Alterado com sucesso");

    Console.WriteLine();

    conn.Close();

    }

    catch(Exception ex)

    {

    Console.WriteLine();Console.WriteLine("ERROR");

    Console.WriteLine("-----------------");

    Console.WriteLine("Erro ao tentar alterar");

    Console.WriteLine(ex.ToString());Console.WriteLine("-----------------");

    }

    }

    }

    curso/O Database/d_alterar.cs

  • 8/12/2019 Programando Em C#

    37/38

    p g i n a37

    Exclu indo Dados

    Agora iremos usa o comando De le t edo SQLpara realizar a excluso de um registro.

    usingSystem;

    usingSystem.Data;usingSystem.Data.SqlClient;

    classIncluir

    {

    publicstaticvoidMain()

    {

    // Criando a variveis para alterao da tabela CATEGORIAS

    stringId;

    stringstrCnx = "Server=wxp-01;Initial Catalog=Northwind;user id=sa";

    stringstrCmm;

    SqlConnection conn;

    SqlCommand comm;

    // Listando as categoriastry

    {

    strCmm = "select CategoryID,CategoryName,Description from Categories";

    conn = newSqlConnection(strCnx);

    conn.Open();

    comm = newSqlCommand(strCmm, conn);

    SqlDataReader dr = comm.ExecuteReader();

    Console.WriteLine();

    Console.WriteLine("L I S T A G E M");

    Console.WriteLine("---------------");

    while(dr.Read())

    {

    Console.Write("[{0}] [{1}] [{2}]",dr[0],dr[1],dr[2]);

    Console.WriteLine();

    }

    Console.WriteLine("---------------");

    conn.Close();

    }

    catch(Exception e)

    {

    Console.WriteLine();Console.WriteLine("ERROR");

    Console.WriteLine("-----------------");

    Console.WriteLine("Erro ao tentar listar");

    Console.WriteLine(e.ToString());

    Console.WriteLine("-----------------");

    }

    Console.Write("Digite o CategoryID para a excluso: ");

    Id = Console.ReadLine();

    Console.WriteLine();

    Console.WriteLine("Iniciando a Excluso");

    try

    {

    // Criando a Conexo com o Servidor e o Banco de dados

  • 8/12/2019 Programando Em C#

    38/38

    p g i n a38

    strCmm = "DELETE FROM Categories where CategoryID="+Id;

    Console.WriteLine("String de Excluso Criada:");

    Console.WriteLine(strCmm);

    Console.WriteLine();

    Console.WriteLine("Fazendo a conexo com o banco e dados");

    conn = newSqlConnection(strCnx);

    conn.Open();

    Console.WriteLine("Criando um comando de excluso em SQL");

    comm = newSqlCommand(strCmm,conn);

    Console.WriteLine("Executando o comando de excluso");

    comm.ExecuteNonQuery();

    Console.WriteLine();

    Console.WriteLine("Excludo com sucesso");

    Console.WriteLine();

    conn.Close();

    }catch(Exception ex)

    {

    Console.WriteLine();

    Console.WriteLine("ERROR");

    Console.WriteLine("-----------------");

    Console.WriteLine("Erro ao tentar excluir");

    Console.WriteLine(ex.ToString());

    Console.WriteLine("-----------------");

    }

    }

    }Local do Arquivo no CD: CD-ROM:\curso/O Database/e_excluir.cs