ADO --> connexion string [Résolu]

Signaler
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
-
Messages postés
7
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
21 novembre 2007
-
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

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
12
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;"
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
1
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 ...

 
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
1
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 ....

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

 
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
1
merci Mr, j'avais un peu oublier le coup du \ devant le \
a coup sur c ca....

 
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
1
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

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

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

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
Messages postés
968
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
26 avril 2013
1
lol oui ya un drop table apres donc je pense que ta table disparait ;-)

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

oki merci. Je m'en suis rendu compte après avoir posté la question mais merci quand mm ^^

hiso