Base De Dados

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.
 
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 
}
 
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
 
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...
 
Back
Topo