1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Base De Dados

Discussão em 'Programação' iniciada por TNTiago, 12 de Fevereiro de 2007. (Respostas: 3; Visualizações: 643)

  1. TNTiago

    TNTiago Power Member

    Gostaria de saber como posso a partir de um programa em C, guardar uma base de dados num ficheiro á parte do proprio programa. Para que quando eu encerrar o programa executável não perder as informações da base.
     
  2. dark_splinter

    dark_splinter Power Member

    Se queres aprender a manipular ficheiros em C tens de aprender a manipular o TIPO

    FILE
    algumas funções como a
    fopen()
    fprintf()
    fscanf()
    fclose()

    entre outras ....

    saca por exemplo um tutorial aqui

    http://www.apostilando.com/sessao.php?cod=11

    e procura por algum topic chamado FICHEIROS ou parecido....

    deixo-te aqui um exemplo:
    Código:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char * argv[])
    {
        FILE *ficheiro;
        char texto[30];
        
        if((ficheiro = fopen(argv[1],"w+")) == NULL)//abrir a ligação ao ficheiro...
        {
               fprintf(stderr,"Erro abrir o ficheiro....");
               exit(1);
        }
        
        fprintf(ficheiro , "Hello world!!");//Estou a escrever no ficheiro...
        rewind(ficheiro);//estou a voltar a trás no ficheiro....
        fscanf(ficheiro,"%s",&texto);//estou a ler a primeira palavra do ficheiro ....
        
        printf("%s", texto);//a imprimir a palavra que copiei do ficheiro....
        
        fclose(ficheiro);//a fechar a ligação ao ficheiro 
    }   
    
     
  3. RicardoSilva

    RicardoSilva Power Member

    Aproveito este tópico sobre BD's para voz colocar uma questão!

    Boas ppl's :009: :009:

    Tou aqui com um problemazito, de fazer um Stored Proceder que me retorne os seguintes campos:
    prdtID, prdtNome, vmpPlanoPromocional, classCode, vmpQuantidadeAmostra

    acontece que eu só tenho estes valores sobre produtos que tenham sido comercializados mas preciso que ele me retorne o mesmo para os não comercializados.

    já tenho ai as 2as querys, uma que me dá os valores que quero sobre os produtos comercializados e a outra que me retorna simplesmente os produtos não comercializados.



    produtos comercializados:

    SELECT prdtID, prdtNome, vmpPlanoPromocional, classCode, vmpQuantidadeAmostra
    FROM tProdutos
    RIGHT OUTER JOIN tVisitasMedicosProdutos ON tProdutos.prdtID = tVisitasMedicosProdutos.vmpPdtID
    LEFT OUTER JOIN tClassificacoes ON tVisitasMedicosProdutos.vmpClassID = tClassificacoes.classID
    WHERE vmpVmID = 49
    Devolve:
    prdtID, prdtNome, vmpPlanoPromocional, classCode, vmpQuantidadeAmostra
    10 , xpto5 , true , C , 2
    11 , xpto6 , true , A , 0
    12 , xpto7 , true , B , 2
    15 , xpto8 , true , N/C , 4


    produtos não comercializados:

    SELECT prdtID, prdtNome
    FROM tProdutos
    WHERE NOT EXISTS (
    SELECT prdtID
    FROM tVisitasMedicosProdutos
    WHERE vmpVmID = 49 AND
    tVisitasMedicosProdutos.vmpPdtID = tProdutos.prdtID
    )

    Devolve:
    prdtID, prdtNome
    20 , xpto1
    21 , xpto2
    22 , xpto3
    23 , xpto4

    Eu pretendo que retorne qualquer coisa como:


    prdtID, prdtNome, vmpPlanoPromocional, classCode, vmpQuantidadeAmostra
    10 , xpto5 , true , C , 2
    11 , xpto6 , true , A , 0
    12 , xpto7 , true , B , 2
    15 , xpto8 , true , N/C , 4
    20 , xpto1 , false , N/C , 0
    21 , xpto2 , false , N/C , 0
    22 , xpto3 , false , N/C , 0
    23 , xpto4 , false , N/C , 0
     
  4. renafi

    renafi Power Member

    Uma solução rápida para o problema do RicardoSilva, é fazer um Union All entre os dois selects, e no 2º select, colocar este código:


    SELECT prdtID, prdtNome,vmpPlanoPromocional, classCode, vmpQuantidadeAmostra
    FROM tProdutos
    WHERE NOT EXISTS (
    SELECT prdtID
    FROM tVisitasMedicosProdutos
    WHERE vmpVmID = 49 AND
    tVisitasMedicosProdutos.vmpPdtID = tProdutos.prdtID


    Só que assim tás a fazer buscas à mesma tabela 2x. Consegues resolver isto com um inner join, mas é um pouco mais complicado para explicar...
     

Partilhar esta Página