OVH Cloud OVH Cloud

connexion mssql

26 réponses
Avatar
znort
Bonjour les gens.
Je recherche désespérément un exemple SIMPLE de connexion à MS SQL en
C++ (sous linux).
Quelqu'un dans l'assistance aurait-il ça sous la main ?
Un lien, une doc, je suis preneur...

6 réponses

1 2 3
Avatar
espie
In article ,
Fabien LE LEZ wrote:
SQL est un langage de programmation, assez complexe.


Non, c'est un langage informatique. Je ne l'eleverai pas a la qualite
de `langage de programmation'. Il y a des extensions (procedures stockees
et tutti-quanti) qui en font un vrai langage de programmation, mais je
ne pense pas qu'il soit Turing-complet, par exemple...

A la base, sql, ce n'est jamais qu'un formalisme un peu bizarre pour
representer la theorie des ensembles (ordonnes)...

Avatar
James Kanze
On May 16, 2:15 am, Fabien LE LEZ wrote:
On Fri, 16 May 2008 01:05:52 +0200, "Sylvain SF"
:


[...]
je ne pose pas qu'apprendre une API (et a fortiori une API métier)
soit pénible ou difficile


Le but est de faire la même chose que ce que permet SQL, mais avec une
API différente. Il n'y a aucune raison de penser que cette API sera
plus simple que SQL lui-même, qui est déjà passablement complexe.

Si un programmeur découvre la notion de base de données avec cette
API, et n'utilise qu'elle (i.e. n'a jamais besoin d'accéder à une base
de données via le langage SQL, en PHP par exemple), alors, pourquoi
pas.

Par contre, si un programmeur a déjà une certaine expérience avec SQ L,
il va falloir de sacrés bons arguments pour le convaincre d'apprendre
un nouveau "langage" (ton API) pour faire sensiblement la même chose.


Je comprends un peu le point de vue de Sylvain. La bibliothèque
OTL dont parle znort traite le SQL comme un espèce
d'entrées/sorties. Ce qui correspond effectivement à la réalité
physique, mais d'un certain côté, on aimerait pouvoir définir
une classe ou une struct qui correspond soit à une ligne dans un
tableau, soit à une suite de colonnes, mais avec un comportement
en plus (pourquoi pas ?) et puis avoir des accès qui
ressemblent à l'utilisation d'un std::vector ou d'un std::map
(avec éventuellement une cause de where comme argument au
constructeur). L'idée, je crois, n'est pas d'exprimer le SQL
avec un autre API, mais plutôt de le présenter selon un modèle
objet plus habituel aux programmeurs C++.

--
James Kanze (GABI Software) email:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Avatar
Sylvain SF
Michael DOUBEZ wrote on 16/05/2008 09:44:

Avec un système à la Boost.Spirit l'expression pourrait largement
ressembler au SQL (ou même en partie au OQL). Cela amortirait la courbe
d'apprentissage.


je ne connais pas assez Spirit pour savoir.
dans le même temps, je ne suis pas certain qu'une ressemblance
stricte entre les expressions C++ et la syntaxe SQL soit
nécessaire. le pré-requis est bien sur de connaitre et comprendre
la structure relationelle de ses infos, ensuite la manipulation
de ces relations pourrait être C++ pur.

Est ce que les données transitent en binaires entre le client et la BDD ?


dans le cas d'une API directe oui, pour un layer ODBC (ou tout layer
avec son propre marshalling) c'est undéfini.

Ce qui implique de repasser par des strings pour exprimer les requêtes
en SQL, donc le gain en vitesse est loin d'être acquis.


une requête (la requête envoyée) est toujours une string; la réponse
est mixte, chaque ligne-réponse peut contenir du texte ou du binaire
selon la seule définition de la table.

l'objet "requete" n'est qu'un petit élément, les objets cursors
(parseurs de réponses) sont les éléments les plus sensibles pour
les gains ou pertes de perf.; des objets tables (connaissant
implicitement leurs colonnes - pour vérifier avant transmission
la validité d'une sélection - et leurs références externes - pour
ne pas avoir à taper explicitement les jointures - seraient des
aides à la création de requete.


@ Marc: SQL:2003 (ISO 9075:2003) est turing-complet.

Sylvain.

Avatar
Sylvain SF
On May 16, 2:15 am, Fabien LE LEZ wrote:
Le but est de faire la même chose que ce que permet SQL, mais avec une
API différente. [...]



non, ce n'est pas le but.

Si un programmeur découvre la notion de base de données avec cette
API, et n'utilise qu'elle (i.e. n'a jamais besoin d'accéder à une base
de données via le langage SQL, en PHP par exemple), alors, pourquoi
pas.



un code PHP n'a *pas* d'autre choix aujourd'hui que d'utiliser
une syntaxe SQL pour ces requêtes - l'exploitation des résultats
de la requête (via 'mysql_result' ou 'mysql_fetch_array') n'est
pas dans le scope de SQL qui ne définit pas la représentation -
externe à la base - d'un cursor.

James Kanze wrote on 16/05/2008 11:55:
[...] L'idée, je crois, n'est pas d'exprimer le SQL
avec un autre API, mais plutôt de le présenter selon un modèle
objet plus habituel aux programmeurs C++.


merci.

Sylvain.


Avatar
Fabien LE LEZ
On Fri, 16 May 2008 02:55:50 -0700 (PDT), James Kanze
:

mais d'un certain côté, on aimerait pouvoir définir
une classe ou une struct qui correspond soit à une ligne dans un
tableau, soit à une suite de colonnes, mais avec un comportement
en plus (pourquoi pas ?)


Avatar
Fabien LE LEZ
On Fri, 16 May 2008 02:55:50 -0700 (PDT), James Kanze
:

on aimerait pouvoir définir
une classe ou une struct qui correspond soit à une ligne dans un
tableau, soit à une suite de colonnes,


Je suis en train de lire la doc de MySQL++, et j'ai l'impression que
cette bibliothèque fait à peu près ça.
http://tangentsoft.net/mysql++/doc/html/userman/tutorial.html#ssqlsintro

1 2 3