ADO --> connexion string [Résolu]

LaTatadu91 968 Messages postés jeudi 20 mai 2004Date d'inscription 26 avril 2013 Dernière intervention - 26 juil. 2007 à 11:13 - Dernière réponse : hisoka7 7 Messages postés jeudi 20 septembre 2007Date d'inscription 21 novembre 2007 Dernière intervention
- 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?


 
Afficher la suite 

Votre réponse

10 réponses

racpp 1910 Messages postés vendredi 18 juin 2004Date d'inscription 14 novembre 2014 Dernière intervention - 26 juil. 2007 à 17:07
+3
Utile
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;"
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de racpp
LaTatadu91 968 Messages postés jeudi 20 mai 2004Date d'inscription 26 avril 2013 Dernière intervention - 26 juil. 2007 à 13:41
0
Utile
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 ...

 
Commenter la réponse de LaTatadu91
LaTatadu91 968 Messages postés jeudi 20 mai 2004Date d'inscription 26 avril 2013 Dernière intervention - 26 juil. 2007 à 14:26
0
Utile
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 ....

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

 
Commenter la réponse de LaTatadu91
LaTatadu91 968 Messages postés jeudi 20 mai 2004Date d'inscription 26 avril 2013 Dernière intervention - 27 juil. 2007 à 09:03
0
Utile
merci Mr, j'avais un peu oublier le coup du \ devant le \
a coup sur c ca....

 
Commenter la réponse de LaTatadu91
LaTatadu91 968 Messages postés jeudi 20 mai 2004Date d'inscription 26 avril 2013 Dernière intervention - 27 juil. 2007 à 09:53
0
Utile
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

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

 
Commenter la réponse de LaTatadu91
hisoka7 7 Messages postés jeudi 20 septembre 2007Date d'inscription 21 novembre 2007 Dernière intervention - 19 oct. 2007 à 17:07
0
Utile
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
Commenter la réponse de hisoka7
LaTatadu91 968 Messages postés jeudi 20 mai 2004Date d'inscription 26 avril 2013 Dernière intervention - 19 oct. 2007 à 17:09
0
Utile
lol oui ya un drop table apres donc je pense que ta table disparait ;-)

 
Commenter la réponse de LaTatadu91
hisoka7 7 Messages postés jeudi 20 septembre 2007Date d'inscription 21 novembre 2007 Dernière intervention - 22 oct. 2007 à 14:00
0
Utile
oki merci. Je m'en suis rendu compte après avoir posté la question mais merci quand mm ^^

hiso
Commenter la réponse de hisoka7

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.