Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1636 connectés 

  FORUM HardWare.fr
  Programmation

  [Visual C++ 6]Base SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Visual C++ 6]Base SQL

n°45797
matt276
Posté le 10-07-2001 à 21:23:05  profilanswer
 

Je cherche à réaliser une interface qui attaque une base MySQL via un pilote ODBC.
Je sais qu'on peut créer un projet MFC de type "database", mais après je sais pas trop par où commencer.
Et je suis un peu pommé dans MSDN sur ce coup là, donc il faut utiliser quelle(s) classe(s) ?
Ca restera très simple dans un prmier temp :
-Ajouter un enregistrement (qui contient 3 champs)
-Visualiser tous les enregistrements de la base.
 
Toute aide, lien, ou exemple serait bienvenue...

mood
Publicité
Posté le 10-07-2001 à 21:23:05  profilanswer
 

n°45805
la viper
Posté le 10-07-2001 à 23:17:55  profilanswer
 

moi j'utilise ADO :
//Query.h
#define DivX_DATABASE "DivX.mdb"
 
// Le provider Microsoft.JET
#define IDS_STRCONNECTION "Provider=Microsoft.JET.OLEDB.4.0;Data source = "
 
// *******************************************************
// -----------------------------------
// Requete : QUERY_ALLDIVX
// Role : Selection de tous les DivX
// -----------------------------------
#define QUERY_ALLDIVX  "SELECT * FROM DIVX_TABLE ORDER BY Title"
 
// -----------------------------------
// Requete : QUERY_ADDDIVX
// Role : Selection d' un emplacement vide dans la table des jours fériés
// -----------------------------------
#define QUERY_ADDDIVX "SELECT * FROM DIVX_TABLE WHERE ID IS NULL"  
 
// -----------------------------------
// Requete : QUERY_DIVXBYID
// Role : Selection selon l' ID
// -----------------------------------
#define QUERY_DIVXBYID  "SELECT * FROM DIVX_TABLE where ID = %d"
 
// -----------------------------------
 
 
//ConnectID.cpp
#include "Query.h" // Requetes
 
// Construction/Destruction
CConnectID::CConnectID()
{
 // Initialisation de COM
 CoInitialize(NULL);
 
 // Creation
 pConn.CreateInstance(__uuidof(Connection));
}
 
CConnectID::~CConnectID()
{
 pConn.Release();
 pConn = NULL;
 // Desinitialisation de COM
 CoUninitialize();
}
 
 
// METHODES ***********************************************
 
_RecordsetPtr CConnectID::GetDivXByID(int ID)
{
 // Objets Recordset
 _RecordsetPtr rec(__uuidof(Recordset));
 
 // Formatage de la requete
 str_Query.Format(QUERY_DIVXBYID,ID);
 
 // -----------------------------
 // Commande
 try{
  // Execution de la commande
  CComVariant v (0L);  
  rec = pConn->Execute(str_Query.operator LPCTSTR(), &v, adOptionUnspecified);
 
 }
 // -----------------------------
 // Traitement des erreurs
 catch(_com_error &err){
  // Affichage du message d' erreur
  CATCH_COM_ERROR(err);
 }
 // Reccuperation du recordset
 return rec;
}
 
_RecordsetPtr CConnectID::GetAllDivX()
{
 // Objets Recordset
 _RecordsetPtr rec(__uuidof(Recordset));
 
 // Formatage de la requete
 str_Query = QUERY_ALLDIVX;
 
 // -----------------------------
 // Commande
 try{
  // Execution de la commande
  CComVariant v (0L);  
  rec = pConn->Execute(str_Query.operator LPCTSTR(), &v, adOptionUnspecified);
 }
 // -----------------------------
 // Traitement des erreurs
 catch(_com_error &err){
  // Affichage du message d' erreur
  CATCH_COM_ERROR(err);
 }
 // Reccuperation du recordset
 return rec;
}
 
// *******************************************************
// Catch ERREURS
// *******************************************************
 
void CConnectID::CATCH_COM_ERROR(_com_error &err)
{
 CString str_Message;  
 
 _bstr_t bstrSource(err.Source());
 _bstr_t bstrDescription(err.Description());
 
 // Formattage du message d' erreur
 str_Message.Format("CConnectID Class\n\nCode = %08lx\nNom = %s\nSource = %s\nDétails = %s\n"
  , err.Error()
  , err.ErrorMessage()
  , (LPCSTR)bstrSource
  , (LPCSTR)bstrDescription );
 
 // Affichage du message d' erreur
 MessageBox(NULL,str_Message,"Erreur",MB_OK|MB_ICONINFORMATION);
}
 
void CConnectID::ConnectToDB()
{
 // Chaine de Connexion
 CString tmp;
 tmp = IDS_STRCONNECTION;
 str_Connection.Format("%s%s%s" ,tmp
         ,DivX_DATABASE
         ,";" );
 // -----------------------------
 // Tentative de connexion
 try{
  // Connection à la source de données
  pConn->Open( _bstr_t(str_Connection),"","",NULL);
 }
 // -----------------------------
 // Traitement des erreurs
 catch(_com_error &err){
  // Affichage du message d' erreur
  CATCH_COM_ERROR(err);
 }
}
 
void CConnectID::DisconnectToDB()
{
 // Deconnection
 pConn->Close();
}
 
void CConnectID::AddDivX( BSTR Title,  
       BSTR Date,
       int Length,
       int Vid,
       int Snd,
       int Size,
       int Type,
       int Number,
       BSTR Language,
       BSTR Codec)
{
 // Objets Recordset
 _RecordsetPtr rec(__uuidof(Recordset));
 
 str_Query = QUERY_ADDDIVX;
 
 CComVariant v (0L);
 v.vt = VT_ERROR;
 v.scode = DISP_E_PARAMNOTFOUND;
 // -----------------------------
 // Commande
 try{
  rec->PutRefActiveConnection (pConn);
  HRESULT hr = rec->Open(str_Query.operator LPCTSTR(), v, adOpenForwardOnly, adLockOptimistic, adCmdText);
 
  if (SUCCEEDED (hr)){
 
   COleSafeArray fieldlist, valuelist;
   long arrayindex[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
   fieldlist.CreateOneDim(VT_VARIANT, 10);
   valuelist.CreateOneDim (VT_VARIANT, 10);  
   
   // Liste des champs
   CComVariant f1("Title" );
   CComVariant f2("Date" );
   CComVariant f3("Length" );
   CComVariant f4("Vid_kbit_s" );
   CComVariant f5("Snd_kbit_s" );
   CComVariant f6("Size_Data" );
   CComVariant f7("CD_Type" );
   CComVariant f8("Number_CD" );
   CComVariant f9("Language" );
   CComVariant f10("Codec" );  
   fieldlist.PutElement(&arrayindex[0], &f1);
   fieldlist.PutElement(&arrayindex[1], &f2);
   fieldlist.PutElement(&arrayindex[2], &f3);
   fieldlist.PutElement(&arrayindex[3], &f4);
   fieldlist.PutElement(&arrayindex[4], &f5);
   fieldlist.PutElement(&arrayindex[5], &f6);
   fieldlist.PutElement(&arrayindex[6], &f7);
   fieldlist.PutElement(&arrayindex[7], &f8);
   fieldlist.PutElement(&arrayindex[8], &f9);
   fieldlist.PutElement(&arrayindex[9], &f10);
 
   // Liste des valeurs
   CComVariant v1 (Title);
   CComVariant v2 (Date);
   CComVariant v3 (Length);
   CComVariant v4 (Vid);
   CComVariant v5 (Snd);
   CComVariant v6 (Size);
   CComVariant v7 (Type);
   CComVariant v8 (Length);
   CComVariant v9 (Number);
   CComVariant v10(Codec);
   valuelist.PutElement(&arrayindex[0], &v1);
   valuelist.PutElement(&arrayindex[1], &v2);
   valuelist.PutElement(&arrayindex[2], &v3);
   valuelist.PutElement(&arrayindex[3], &v4);
   valuelist.PutElement(&arrayindex[4], &v5);
   valuelist.PutElement(&arrayindex[5], &v6);
   valuelist.PutElement(&arrayindex[6], &v7);
   valuelist.PutElement(&arrayindex[7], &v8);
   valuelist.PutElement(&arrayindex[8], &v9);
   valuelist.PutElement(&arrayindex[9], &v10);
 
   rec->AddNew(fieldlist, valuelist) ;
   rec->Close() ;
  }
    }
 // -----------------------------
 // Traitement des erreurs
 catch(_com_error &err){
  // Affichage du message d' erreur
  CATCH_COM_ERROR(err);
 }
}
 
void CConnectID::DelDivX(int ID)
{
 // Objets Recordset
 _RecordsetPtr rec(__uuidof(Recordset));
 
 // Formatage de la requete
 str_Query.Format(QUERY_DIVXBYID,ID);
 
 CComVariant v (0L);
 v.vt = VT_ERROR;
 v.scode = DISP_E_PARAMNOTFOUND;
 // -----------------------------
 // Commande
 try{
  rec->PutRefActiveConnection(pConn);
  HRESULT hr = rec->Open(str_Query.operator LPCTSTR(), v,adOpenForwardOnly, adLockOptimistic, adCmdText);
 
        if (!rec->GetEndOfFile()){
            rec->Delete(adAffectCurrent);
            rec->Close();
 
        }
    }
 // -----------------------------
 // Traitement des erreurs
 catch(_com_error &err){
  // Affichage du message d' erreur
  CATCH_COM_ERROR(err);
 }
 
}
 
void CConnectID::UpdateDivX(int ID,
       BSTR Title,  
       BSTR Date,
       int Length,
       int Vid,
       int Snd,
       int Size,
       int Type,
       int Number,
       BSTR Language,
       BSTR Codec)
{
 // Objets Recordset
 _RecordsetPtr rec(__uuidof(Recordset));
 
 str_Query.Format(QUERY_DIVXBYID,ID);
 
 CComVariant v (0L);
 v.vt = VT_ERROR;
 v.scode = DISP_E_PARAMNOTFOUND;
 
 // -----------------------------
 // Commande
 try{
  rec->PutRefActiveConnection (pConn);
  HRESULT hr = rec->Open(str_Query.operator LPCTSTR(), v, adOpenForwardOnly, adLockOptimistic, adCmdText);
 
  if (SUCCEEDED (hr)){
   if (!rec->GetEndOfFile()){
    CComVariant f1(ID);
    CComVariant f2(Title);
    CComVariant f3(Date);
    CComVariant f4(Length);
    CComVariant f5(Vid);
    CComVariant f6(Snd);
    CComVariant f7(Size);
    CComVariant f8(Type);
    CComVariant f9(Number);
    CComVariant f10(Language);
    CComVariant f11(Codec);
 
    rec->PutCollect(L"ID", &f1);
    rec->PutCollect(L"Title",&f2);
    rec->PutCollect(L"Date",&f3);
    rec->PutCollect(L"Length",&f4);
    rec->PutCollect(L"Vid_kbit_s",&f5);
    rec->PutCollect(L"Snd_kbit_s",&f6);
    rec->PutCollect(L"Size_Data",&f7);
    rec->PutCollect(L"CD_Type",&f8);
    rec->PutCollect(L"Number_CD",&f9);
    rec->PutCollect(L"Language",&f10);
    rec->PutCollect(L"Codec",&f11);
 
    rec->Update(v, v);
    rec->Close();
   }
  }
    }
 // -----------------------------
 // Traitement des erreurs
 catch(_com_error &err){
  // Affichage du message d' erreur
  CATCH_COM_ERROR(err);
 }
}


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [Visual C++ 6]Base SQL

 

Sujets relatifs
ADO sous WinCE et requete SQLcomment interroger une base de donne avecVC++ ou en language C
[Visual C++] Pourquoi More Styles > Visible ne marche pas ?[Visual C++] Comment mettre du texte, des boutons dans un onglet CTabC
[C++] Comment cree une fenetre de base en DDraw8[ASP] Apostrophe dans une base de données
[base de donnée] inserer un fichier dans une base[Visual C++] remplacer un caractère dans un CString
[JAVA] bouton et base de donnees, requete INSERT associe a evenment[Visual C++] Chnger couleur de Police
Plus de sujets relatifs à : [Visual C++ 6]Base SQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR