Visual C++ & SQL

Visual C++ & SQL - Programmation

Marsh Posté le 08-03-2001 à 15:44:49    

Comment faire pour inclure des requetes SQL dans
un code en Visual C++.
 
Si on utilise le support base de donnees dans appwizzard,
tout ce qu'il permet c'est de circuler entre les
enregistrements, mais pas de faire des requetes precises.
 
Merci
A++


---------------
Avoir un arbre dans son jardin n'empêche en rien de se promener en forêt.
Reply

Marsh Posté le 08-03-2001 à 15:44:49   

Reply

Marsh Posté le 08-03-2001 à 17:33:15    

Pour pouvoir faire des requetes SQl dans un prog en VC++, tu dois passer ou par ODBC ou par DAO.
 
Tu veux acceder à quelles bases de données ?
 
Si tu passes par ODBC, tu as la classe CDatabase qui permet de te connecter à une DSN et ensuite de faire des requetes SQL.
 
Si tu passe par DAO, utilises la classe CDAoDatabase.


---------------
Pipiru piru piru pipiru pi
Reply

Marsh Posté le 09-03-2001 à 13:06:29    

C'est une base de données Acces 2000.
 
Ce que je voudrais, c'est les lignes de code pour
se connecter à la base de données et effectuer une requete,
comme en java par exemple :
 
String url="jdbc:odbc:Biblio";  
try{
   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver" );
   con=DriverManager.getConnection(url,"","" );
}catch(Exception e){
   System.out.println(e);
   try{
      con.close();
   }catch(SQLException se){
      se.printStackTrace();
   }
   System.exit(1);
}
 
ResultSet result=sttm.executeQuery(sqlRequete);
try{
   con.close();
}catch(SQLException e){
   e.printStackTrace();
}
 
 
Exactement la meme chose, mais en C++


---------------
Avoir un arbre dans son jardin n'empêche en rien de se promener en forêt.
Reply

Marsh Posté le 09-03-2001 à 13:07:46    

à priori, travailler d'un produit MS à un autre, ca doit pas être trop dur. Vérifie que les drivers ODBC sont installés.


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

Marsh Posté le 09-03-2001 à 13:15:16    

Java c'est du M$ ???
J'croyais que c'était du Sun.
Putain ca va trop vite l'informatique,
y se passe des trucs ....
 
Sinon pas soucis pour les drivers,
en java ça marche nickel.


---------------
Avoir un arbre dans son jardin n'empêche en rien de se promener en forêt.
Reply

Marsh Posté le 09-03-2001 à 14:11:57    

euh je parlais de Visual C++. C'est bien ca qui t'interesse non?


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

Marsh Posté le 09-03-2001 à 14:15:01    

oui, c'est du C++ qu'il veux il a juste donné du code java en exemple.
Ca m'interrese aussi si on peut se passer des mfc.


---------------
http://www.cheata.net le site qui vous donne la banane!
Reply

Marsh Posté le 09-03-2001 à 18:03:10    

Je sais inclure des bd access 2000 sous visual en mfc , c est tout con ..
totu d abord , tu te fou du wizard qui sert a rien !
Ensuite , tu parametre ton driver ODBC correctement puis
tu ajoutes une classe a ton projet qui derive de CRecordSet
tu la fait pointer vers ta base de donnée (tu es guidé ..)
Ensuite , tu chois la table que tu veux dans ta bd access (si tu en a plusieurs) (i lfaut une classe qui derive de Crecordset par table !)
puis dans ton code tu fais :
 
Ctaclasse objetdemaclasse;
objetdemaclasse.Open(CRecordSet::Snapshot,ta requete SQl entre "" )
La , l objet contient le resultat de ta requete. Ensuite , tu n a plus que parcourir ta base resultat avec objetdemaclasse.movenext() (cf aide de visual ...)
 
pour recuper un champ : objetdemaclasse.m_nomdelatribut !!
 
Voila

Reply

Marsh Posté le 10-03-2001 à 00:15:34    

ragefan> C'est effectivement une bonne technique pour lire des records mais je crois qu'on ne peut pas faire de "INSERT INTO matable etc..." directement.
 
Si tu utilises une base Access, tu utilises DAO, c'est le plus simple mais tu restes propriétaire de M$.
 
Tu fais par exemple :
 
// début :
CDaoDatabase maBase;
CString commandeSQL = "INSERT INTO maTable (pk) values (1)"; // par exemple
 
maBase.Open("c:\\monchemin\\nomdeBase.mdb" );
maBase.Execute(commandeSQL);
maBase.Close();
// fin
 
et c'est tout.
 
Ciao


---------------
Pipiru piru piru pipiru pi
Reply

Marsh Posté le 10-03-2001 à 00:23:55    

Y a quelqu'un qui pourrais me dire comment attaquer une base de données Oracle en utilisant CDatabase ( si c'est possible).
 
Sinon en ce qui concerne access , effectivement en utilisant DAO , c'est on ne peut plus simple.
 
Tu utilises un objet CDaoDatabase , tu utilises open pour ouvrir la base et close pour la fermer.
 
Si tu veux faire une requete qui entraine une modif, tu utilises la fonction CDaoDatabase::Execute(... )
 
Si tu veux faire un Select, il faut utiliser un objet CDaoRecordset que tu attaches à ton objet CDaoDatabase, tu utilises la fonction CDaoRecordset::Open(...) pour lancer la requete, la fonction MoveNext() pour passer à la ligne suivante , et la fonction GetFieldValue(num) pour accéder au champ désiré : Attention cette fonction retourne un objet COleVariant donc penser à convertir la donnée au format voulu ( texte , date , nombre etc...)

Reply

Marsh Posté le 10-03-2001 à 00:23:55   

Reply

Marsh Posté le 10-03-2001 à 14:01:52    

>Xilebo :
 
pour Oracle il faut utiliser ODBC et donc CDatabase. C'est le même principe que DAO sauf que l'ouverture de la base s'effectue par le DSN que tu auras paramétré sur le poste client.
 
Tu regardes l'help sur la méthode CDatabase::Open().


---------------
Pipiru piru piru pipiru pi
Reply

Marsh Posté le 10-03-2001 à 15:39:10    

Merci de ton rensignement n0mad, je vais essayer ca de suite

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed