0% ont trouvé ce document utile (0 vote)
5 vues3 pages

Accès aux bases de données en C++, C# et Java

Ce document présente l'accès aux bases de données via différents langages de programmation, notamment C++, C#, et Java, en utilisant des technologies comme OLEDB, ODBC et MySQL. Il fournit des exemples de code pour illustrer comment établir des connexions et exécuter des requêtes SQL. Le document aborde également les spécificités de chaque méthode d'accès et les configurations nécessaires.

Transféré par

Gloire Sumbu
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
5 vues3 pages

Accès aux bases de données en C++, C# et Java

Ce document présente l'accès aux bases de données via différents langages de programmation, notamment C++, C#, et Java, en utilisant des technologies comme OLEDB, ODBC et MySQL. Il fournit des exemples de code pour illustrer comment établir des connexions et exécuter des requêtes SQL. Le document aborde également les spécificités de chaque méthode d'accès et les configurations nécessaires.

Transféré par

Gloire Sumbu
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Accès aux bases de données par programmation

1. Introduction :
Le but de ce cours est de présenter l’accès aux bases de données dans un cadre d’application et non de
langages scripts inclus dans des pages.

2. Accès en c++ :
2.1 Accès [Link]
Son inconvénient est bien sur d’exiger le framework et son avantage est une relative simplicité grâce à
l’utilisation d’objets.
La technologie utilisée ici est ADO (technologie de connexion microsoft). ADO utilise pour former les
requêtes SQL, des drivers ODBC, OLEDB ou autre , par exemple mySql. ODBC tend à être abandonné sur
les formats de bases de données récents (par exemple access 2007).

Remarques : les classes accédant aux bases de données faisant partie du framework sont des classes
managées ; il en découle les corollaires suivants :
• Pour créer un objet de telles classes, la syntaxe est la suivante :
OleDbConnection ^connexion = gcnew OleDbConnection(strCon);
(à partir de visual 2005 et du framework 3.5 , le gcnew remplace le new et le caractère ^ remplace * pour
faire le distingo entre des classes génériques et des classes managées).
• Si on écrit une classe pour encapsuler ces accès aux bases de données, celle-ci devra elle même être
managée, c’est à dire avoir le mot clef ref devant le mot clef class.

2.1.1 Accès par OLEDB :


#include <iostream>
using namespace std;
using namespace System;
using namespace System::Data::OleDb;
int main() {
cout << "Acces base de données access en Oledb" << endl;
String ^strCon = gcnew String("Provider=[Link].4.0;Data Source=D:/TP/[Link]");
OleDbConnection ^connexion = gcnew OleDbConnection(strCon);

connexion->Open();

String ^cmdText = gcnew String (“select * from personne;");


OleDbCommand ^commande = gcnew OleDbCommand(cmdText, connexion );
OleDbDataReader ^resultat = commande->ExecuteReader();

while (resultat->Read()) {
Console::WriteLine (resultat["nom"]);
}
resultat->Close();
connexion->Close();
return 0;
}

2.1.2 Accès par Odbc :


2 cas sont possibles, avec et sans DSN. (création d’un odbc dans le panneau de
configuration).
On peut accéder à toute sorte de base de donnée, y compris mysql.
#include <iostream>
using namespace std;
using namespace System;
using namespace System::Data::Odbc;

int main(){
cout << "Acces base de données access en odbc" << endl;
// String ^strCon = gcnew String ("DRIVER={Microsoft Access Driver
(*.mdb)};DBQ=D:/TP/[Link]");
String ^strCon = gcnew String ("DSN=Livre"); // access par dsn

OdbcConnection ^connexion = gcnew OdbcConnection(strCon);


connexion->Open();
String ^cmdText = gcnew String (“select * from personne;");

OdbcCommand ^commande = gcnew OdbcCommand (cmdText, connexion );

J:\JLP\Info\BaseDeDonnees\Cours\AccesBaseDonné[Link] JLPascal 1/1


OdbcDataReader ^resultat = commande->ExecuteReader();
while (resultat->Read()) {
Console::WriteLine (resultat["nom"]);

}
resultat->Close();
connexion->Close();
return 0;
}

2.1.3 Accès par Mysql :


Un package doit être téléchargé et installé ([Link]). Evidement, seules les bases Mysql sont
exploitables avec ce driver.
#include <iostream>
using namespace std;
using namespace System;

using namespace System::Data::SqlClient;

int main() {
String ^strCon = gcnew String ("Database=Badgeuse;Data Source=localhost;User Id=root;Password=");

MySqlConnection ^connexion = gcnew MySqlConnection(connexion);


String ^ cmdText = gcnew String ("select * from personne;");

MySqlCommand ^commande = gcnew MySqlCommand(cmdText, connexion );


MySqlDataReader ^resultat = commande->ExecuteReader();
while (resultat->Read()) {
Console::WriteLine (resultat["nom"]);
}
resultat->Close();
connexion->Close();
return 0;
}

2.2 Accès par l’API windows (librairie [Link])


Accède à n’importe quelle base de donnée sur laquelle un lien odbc a été crée.
Nécessite les inclusions :
#include <sql.h>
#include <sqlext.h>
#include <sqltypes.h>

Toutes les fonctions retournent SQL_SUCCESS en cas de succès

Phase d’initialisation et de connexion :


SQLHENV henv;
SQLHDBC hdbc;
SQLRETURN retcode;

Retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);


Retcode = SQLSetConnectAttr(henv, SQL_LOGIN_TIMEOUT, (void*)5, 0);
Retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0);
Retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
Retcode = SQLConnect(hdbc, (SQLCHAR*)LienOdbc,strlen(LienOdbc),
(SQLCHAR*)Login, strlen(Login),(SQLCHAR*)Pwd, strlen(Pwd));

Exemple d’une requête :


SQLHSTMT hstmt;
Retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
Retcode = SQLExecDirect(hstmt, (SQLCHAR*)requete, SQL_NTS);

Dans le cas d’une sélection (select * from livre where noLivre = 5):
double prix, char titre[50] ;
SQLBindCol(hstmt, 2, SQL_C_CHAR, titre, 80, NULL);
SQLBindCol(hstmt, 5, SQL_C_DOUBLE, &prix, sizeof(double), NULL);

Dans le cas d’une requête modifiante (insert into emprunt values (8, 2, ‘01/01/01’, null) ; )
Uniquement tester le retour de la fonction SQLExecDirect
SQLFreeStmt(hstmt, SQL_DROP);

Phase de libération et de déconnexion :


SQLDisconnect (hdbc);
SQLFreeConnect(hdbc);
SQLFreeHandle (SQL_HANDLE_ENV, henv);

J:\JLP\Info\BaseDeDonnees\Cours\AccesBaseDonné[Link] JLPascal 2/2


3. Accès en C# :
- La technologie est forcément en .NET , oledb ou odbc.
- Le langage c# est souvent utilisé avec la base de donnée SqlServer.
using System;
using [Link];

namespace accesOledb {
class Class1 {
[STAThread]
static void Main(string[] args)
{
[Link] ("Acces base de donnees access en Oledb" );
OleDbConnection m_connexion;
string m_strCon = "Provider=[Link].4.0;Data
Source=J:/JLP/Info/BaseDeDonnees/Badgeuse/Access/[Link]"; // access
m_connexion = new OleDbConnection(m_strCon);
m_connexion.Open();
string nom, prenom;
int noPers = 2;
string requete = "select * from personne where noPers=" + noPers;
OleDbCommand m_commande = new OleDbCommand(requete, m_connexion );
OleDbDataReader m_resultat = m_commande.ExecuteReader();

if (m_resultat.Read()) {
nom = [Link] (m_resultat["nom"]);
prenom = [Link] (m_resultat["prenom"]);

[Link] ("nom=" + nom + " prenom " + prenom);


}
[Link]();
} // fin main
} // fin classe
}
4. Accès en java (JDBC) :
Accède à n’importe quelle base de donnée sur laquelle un lien odbc a été crée.
package baselivre;
import [Link].*;

class accesLivre {
public static void main(String[] args) {
[Link] ("Acces base de donnée Livre");
try {
[Link]("[Link]"); // Charger le pilote JDBC-ODBC
}
catch(Exception e){
[Link]("exception due au driver(1)");
}

String odbc = "jdbc:odbc:Livre";


Connection connexion = null;
try { // Création d'une instance de la classe Connection
connexion = [Link](odbc, "", "");
}
catch(Exception e){
[Link]("exception due au driver(2)");
}
String query = "SELECT * FROM livre;";
ResultSet results = null;

try {
Statement stmt = [Link]();
results = [Link](query);
}
catch(Exception e){
[Link]("exception due a la requete");
}
try {
while ([Link]()) {
String titre = [Link]("titre");
String auteur = [Link]("auteur");
int noLivre = [Link]("noLiv");
[Link]("noLivre " +noLivre + " titre " + titre + " auteur " + auteur);
}
}
catch(Exception e){
[Link]("exception du a la lecture");
}

} // fin main
}

J:\JLP\Info\BaseDeDonnees\Cours\AccesBaseDonné[Link] JLPascal 3/3

Vous aimerez peut-être aussi