ADO --> connexion string

Résolu
LaTatadu91
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
- 26 juil. 2007 à 11:13
hisoka7
Messages postés
7
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
21 novembre 2007
- 22 oct. 2007 à 14:00
bonjour,

Voila pr me connecter a une base SQL Server express 2005 distante via C++ (VS 2005)je compte utilisé ADO
j'ai trouver ceci :


bon j'ai trouver un code qui me semble bien utilisant ADO (ce vers quoi je pensais aller)

le voici :

#include 

#include <string>

#import "C:\Program files\Common Files\System\Ado\msado15.dll"

rename("EOF", "ADOEOF")

std::string outputashex(unsigned long l)

{

    char buffer[1024];

    ::itoa(l, buffer, 16);

    return buffer;

} ;

void main()

{

    HRESULT hr;

    CoInitialize(NULL);

    try

    {

        ADODB::_ConnectionPtr connection;

        hr = connection.CreateInstance(__uuidof(ADODB::Connection));

        if (FAILED(hr))

        {

            throw _com_error(hr);

        }

        ADODB::_RecordsetPtr recordset;

        hr = recordset.CreateInstance(__uuidof(ADODB::Recordset));

        if (FAILED(hr))

        {

            throw _com_error(hr);

        }

        connection->CursorLocation = ADODB::adUseClient;

        connection->Open(L"Provider=sqloledb;Data Source=fifa;"

        L"Initial Catalog=test;User Id=testsa;Password=testsa;",
L"",

        L"", ADODB::adConnectUnspecified);

        recordset->Open("CREATE TABLE mytable (value NVARCHAR(255))",

        connection.GetInterfacePtr(), ADODB::adOpenForwardOnly,

        ADODB::adLockReadOnly, ADODB::adCmdText);

        recordset->Open("INSERT INTO mytable VALUES ('Hello')",

        connection.GetInterfacePtr(), ADODB::adOpenForwardOnly,

        ADODB::adLockReadOnly, ADODB::adCmdText);

        recordset->Open("INSERT INTO mytable VALUES ('Goodbye')",

        connection.GetInterfacePtr(), ADODB::adOpenForwardOnly,

        ADODB::adLockReadOnly, ADODB::adCmdText);

        recordset->Open("SELECT * from mytable",

        connection.GetInterfacePtr(),

        ADODB::adOpenForwardOnly, ADODB::adLockReadOnly,

        ADODB::adCmdText);

        while(!recordset->ADOEOF)

        {

            _variant_t var;

            var = recordset->Fields->GetItem(L"value")->GetValue();

            std::cout << static_cast<char
*>(_bstr_t(var.bstrVal))

            << std::endl;

            recordset->MoveNext();

        };

        recordset->Close();

        recordset->Open("DROP TABLE mytable", connection.GetInterfacePtr(),

        ADODB::adOpenForwardOnly, ADODB::adLockReadOnly,

        ADODB::adCmdText);

    }

    catch(_com_error &amp;e)

    {

        std::cerr << ::outputashex(hr) << ":"

        << static_cast<char *>(e.Description());

    }

    catch(...)

    {

        std::cerr << "Unhandled Exception";

    };

}

le code me semble bien

par contre j'ai essayer differents connexion string mais il n'arrive pas a se connecter à mon serveur distant...

j'ai essayer ceci :
"Provider=MSDASQL; Driver={SQL Server}; Server=MITAIS\SQLEXPRESS; Database=BaseTest; UID=; PWD=;"
et 
Driver={SQL Native Client};Server=MITAIS\SQLEXPRESS;Database=BaseTest;Uid=;Pwd=;"

sinon pr infos quand je me connecte via le manager sur le serveur j'utilise l'authetification Windows!!!
alors j'ai essayer avec UID = identifiant de connection a mon pc et PWD= password de connexion a mon windows

mais pareil il ne semble pas réussir a se connecter...

pourriez vous m'aider SVP?


 

10 réponses

racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
14
26 juil. 2007 à 17:07
Salut,
Essaie l'une de ces deux chaines de connexion. Elles marchaient pour moi avec SQL Express 2005:

"Provider=SQLNCLI;Server=nomordinateur\\SQLEXPRESS;Database=nombase;Trusted_Connection=yes;"

"Provider=SQLOLEDB;Server=nomordinateur\\SQLEXPRESS;Database=nombase;Trusted_Connection=yes;"
3
LaTatadu91
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
1
26 juil. 2007 à 13:41
je continue mes recherches et niveau code ca me semble correct apres avoir vu plusieurs sources de brunews par exemple.
pour la connexion string j'ai vu ca ici:
http://www.connectionstrings.com/?carrier=sqlserver2005

je n'arrive vraiment pas a me connecter a ma base , je pense pourtant ne pas en etre loin ...

 
0
LaTatadu91
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
1
26 juil. 2007 à 14:26
bon j'ai essayer en mode d'authentification SQL Server et non plus en windows
avec
connection->Open("Driver={SQL Native Client};Server=NIVEAU2-03\SQLEXPRESS;Database=BaseTest;Uid=sa;Pwd=xavier;", L"",L"", adConnectUnspecified);

si je me connecte avec cet id et ce mot de passe par le manager SQL server ca marche je peux administrer ma base
mais par mon petit programme C++ il ne veut pas ....

 
0
LaTatadu91
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
1
26 juil. 2007 à 14:56
lol je me sens un peu seul sur ce coup la....

 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LaTatadu91
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
1
27 juil. 2007 à 09:03
merci Mr, j'avais un peu oublier le coup du \ devant le \
a coup sur c ca....

 
0
LaTatadu91
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
1
27 juil. 2007 à 09:53
salut,

bon je reviens sur ce que j'ai dit, ca marche sur ma base en local mais j'ai mis le mm programme sur un autre pc et la il n'arrive pas a se connecter
hors au final c'est bien cela que je veux faire : se connecter a un serveur distant...
d'ou peux venir le pb

 
0
LaTatadu91
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
1
27 juil. 2007 à 10:20
j'ai desactiver mon parefeu et celui de windows mais rien n'y fait la base est inaccessible a distance ....

 
0
hisoka7
Messages postés
7
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
21 novembre 2007

19 oct. 2007 à 17:07
Bonjour,

J'ai repris le code initial en adaptant légèrement les variables, le tout compile et s'exécute parfaitement sous Visual C++ 2005. Le seul problème c que la table que j'ai créée ne s'affiche pas dans ma fenetre SQL Server 2005. 
Quelqu'un aurait-il une idée? 

Ci-après le code:  

// SQL_Server_insert_table.cpp : Defines the entry point for the console application.

//

#include

"stdafx.h"#include

#include

<string>#import

"C:\Program files\Fichiers Communs\System\Ado\msado15.dll" rename(
"EOF",
"ADOEOF")
using

namespace ADODB;
using

namespace std;std::string outputashex(

unsigned
long l){

char buffer[1024];::itoa(l, buffer, 16);

return buffer;} ;

void

main(){

HRESULT hr;

CoInitialize(NULL);

try{

_ConnectionPtr connection;

// Call Create instance to instantiate the Connectionhr = connection.CreateInstance(

__uuidof(Connection));

if (FAILED(hr)){

throw _com_error(hr);}

// Call Create instance to instantiate the Recordset_RecordsetPtr recordset;

hr = recordset.CreateInstance(

__uuidof(Recordset));

if (FAILED(hr)){

throw _com_error(hr);}

connection->CursorLocation = adUseClient;

// _bstr_t strConnection="provider=SQLOLEDB;server=INGE-92-050;database=Phonetic;uid=sa;pwd=ares";hr = connection->Open(L

"Provider=sqloledb;Data Source=INGE-92-050;"L

"Initial Catalog=Sample_Table;User Id=sa;Password=ares;", L
"",L

"", adConnectUnspecified);

if(FAILED(hr)){

throw _com_error(hr);}

hr = recordset->Open(

"CREATE TABLE Sample_Table (value NVARCHAR(255))",connection.GetInterfacePtr(), adOpenForwardOnly,

adLockReadOnly, adCmdText);

if(FAILED(hr)){

throw _com_error(hr);}

hr = recordset->Open(

"INSERT INTO Sample_Table VALUES ('Hello')",connection.GetInterfacePtr(), adOpenForwardOnly,

adLockReadOnly, adCmdText);

if(FAILED(hr)){

throw _com_error(hr);}

hr = recordset->Open(

"INSERT INTO Sample_Table VALUES ('Goodbye')",connection.GetInterfacePtr(), adOpenForwardOnly,

adLockReadOnly, adCmdText);

if(FAILED(hr)){

throw _com_error(hr);}

hr = recordset->Open(

"SELECT * from Sample_Table",connection.GetInterfacePtr(), adOpenForwardOnly,

adLockReadOnly, adCmdText);

if(FAILED(hr)){

throw _com_error(hr);}

while(!recordset->ADOEOF){

_variant_t var;

var = recordset->Fields->GetItem(L

"value")->GetValue();std::cout <<

static_cast<
char *>(_bstr_t(var.bstrVal))<< std::endl;

recordset->MoveNext();

};

recordset->Close();

hr = recordset->Open(

"DROP TABLE Sample_Table", connection.GetInterfacePtr(),adOpenForwardOnly, adLockReadOnly, adCmdText);

if(FAILED(hr)){

throw _com_error(hr);}

}

catch(_com_error &e){

cerr << ::outputashex(hr) <<

":"<<

static_cast<
char *>(e.Description());}

catch(...){

cerr <<

"Unhandled Exception";}

}

Merci d'avance,

hiso
0
LaTatadu91
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
1
19 oct. 2007 à 17:09
lol oui ya un drop table apres donc je pense que ta table disparait ;-)

 
0
hisoka7
Messages postés
7
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
21 novembre 2007

22 oct. 2007 à 14:00
oki merci. Je m'en suis rendu compte après avoir posté la question mais merci quand mm ^^

hiso
0