//---------------------------------------------------------------------------
#ifndef SqlKlasseUnitH
#define SqlKlasseUnitH
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <cstring.h>
#include <fstream.h>
#include "SqlModulUnit.h"
//----------------------------------------------------------------------------//
class SqlKlasse
{	public:
    //konstruktør
      SqlKlasse(char Kilde_ = 'f');

    //Transaktions styrings funktioner.
      //Funktion som benyttes inden der slettes, updateres eller indsættes noget i
	  //databasen.
      void StartTransaction();

      //FUnktion til at skrive ændringerne til databasen
      void Rollback();

      //FUnktion til at annullere evt. ændringer lavet i databasen.
      void Commit();

    //Hoved eksekverings sql funktion til indsæt, update og slet statements.
	  //Funktionen eksekvere et sql statement (S) som enten setter, updatere eller
      //indsætter noget i databasen.
      bool ExecSql(string S);

    //Indsæt funktioner
      //Funktionen starter et nyt indsæt statement i en given tabel. ("tabel")!
      void IndsaetI(string Table);

      //Funktionen indsætter en string(Value) i det sql statementet der er blevet
      //initialiseret i funktionen IndsaetI().
      void Indsaet(string Value);

      //FUnktionen indsætter en integer i sql statementet som senere skal eksekveres.
      void Indsaet(int Value);

      //Funktionen indsaetter en double i indsæt statementet.
      void Indsaet(double Value);

	  //Funktionen indsætter en tupel i databasen. Forinden er sql statementet blevet
	  //sammensat ved kald til ovenliggende funktioner!.
      bool Indsaet();

    //Indlæs funktioner
      //Funktionen starter indlæsningen, ved at eksekvere det overførte SQL statement.
	  //Herefter returneres en sandhedsværdi om udfaldet af denne operation.
      bool StartIndlaesning(const string& S);

      //Funktionen henter en given attribut navngivet ved "string2" som en sting (string)
	  //Herefter returneres en sandhedsværdi for udfaldet
      bool FindString(string& string1, string string2);

      //Funktionen henter en given attribut navngivet ved "string2" som en integer.
	  //Alt efter udfaldet returneres en sandhedsværdi.
      bool FindInt(int& int1, string string2);

	  //FUnktionen får databasen til at springe videre til næste tupel i de selecterede
	  //data. Der returneres en sandhedsværdi for om der er flere tilbage at indlæse.!
      bool FindNaeste();

    //bi funktioner
      void SkiftStatus(char Status_);
      void Navn(string Navn, string Table);
      void ny(string FilNavn);

	private:
      string StrToAnsiStr(const string& A);
      char Kilde; //angiver om klassen skal arbejde med filer eller databasen.
      string S; //Indeholder indsæt sql statement
      ifstream* ind; //anvendes i forbindelse med fil håndtering
      FILE* ud; //anvendes i forbindelse med fil håndtering
};

//---------------------------------------------------------------------------
#endif
