none
La connexion a la BDD RRS feed

  • Question

  • ou puis je trouver de l'aide sur cet outil? et plus généralement sur SQL Server

    ma priorité aujourd'hui est de réaliser un connect à partir de VisualStudio C++


    Jean Noël Martin



    vendredi 28 février 2014 05:17

Réponses

  • il fallait reprendre la chaine comme suit;

    			SqlConnection^ myConnection = gcnew SqlConnection();
    			myConnection->ConnectionString = "Integrated Security=true;User Instance=true;AttachDbFilename=C:\\Program Files\\Microsoft SQL Server\\MSSQL10.SQLEXPRESS\\MSSQL\\DATA\\COHERENCE.mdf;database=COHERENCE;server=ALLIANCE-EA8F7A\\SQLEXPRESS";
    			myConnection->Open();
    			myCommand = myConnection->CreateCommand();
    


    Jean Noël Martin

    • Marqué comme réponse JeanNoel53 mardi 8 avril 2014 09:07
    mardi 8 avril 2014 09:07

Toutes les réponses

  • Bonjour

    On a déplacé votre thread vers le forum dédiée SQL.
    F1 c'est la touché d'aide. 
    Ici vous avez quelques exemples :
    http://www.codeproject.com/Questions/341111/How-to-connect-SQL-Server-to-Cplus-Program
    Mais code managée ou non managée ?

    Coirdialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    vendredi 28 février 2014 14:16
    Modérateur
  • J'ai utilisé la solution numero2 du lien

    et j'ai des erreurs de compilation qui proviennent de??? C'est une implémentation managé.mais ???

    je vous met le code; ainsi que les déclarations des includes et le message d'erreur:

    D'abord la déclaration extraite des includes

    en deux temps

    typedef INT64           SQLLEN;
    #define SQLLEN          SQLINTEGER
    typedef SQLINTEGER      SQLHANDLE;

    D'abbord les instructions qui définissent SQLHANDLE puis la déclaration de la primitive

    SQLRETURN SQL_API SQLAllocHandleStd(
        SQLSMALLINT     fHandleType,
        SQLHANDLE       hInput,
        __out
        SQLHANDLE      *phOutput);

    la déclaration des données dans mon implémentation

    namespace SpecificationChecker
    {
        using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
    	using namespace System::IO;
    
    	ref class CInterbaseManagerM
    	{
    	private:
    		static SQLHANDLE sqlenvhandle;    
    		static SQLHANDLE sqlconnectionhandle;
    		static SQLHANDLE sqlstatementhandle;
    		static SQLRETURN retcode;
    	public:
    		CInterbaseManagerM::CInterbaseManagerM();
    		CInterbaseManagerM::~CInterbaseManagerM();
    		static void CInterbaseManagerM::edit( char* final_err_buff);
    		static erc CInterbaseManagerM::ConnectServer(std::wstring wsUserName, std::wstring wsPassword, std::wstring wsHost);
    		static List<ElementSemanticM^>^ CInterbaseManagerM::ExecuteSelectRequestAndReadElement(std::wstring wsRequest, unsigned long* dwNbResultFound);
    		static List<ElementLinksM^>^ CInterbaseManagerM::ExecuteSelectAndLinkRequest( std::wstring wsRequest, ElementSemanticM^ pEnreg, unsigned long  &dwNbResultFound);
    		static erc CInterbaseManagerM::GetWideString(short shIndexField, std::wstring & wsStringValue);
    		static List<ElementWork^>^ CInterbaseManagerM::ExecuteSelectRequestAndReadWork(std::wstring wsRequest, unsigned long* dwNbResultFound);
    	}; 
    };
    puis le code issus de l'exemple 2
                    if( ErrorCode == INIT_NO_ERROR || ErrorCode == 1)
    		{
    		    if(SQL_SUCCESS!=SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &sqlenvhandle))
    			break;

    et enfin le message du compilateur

    1>..\..\..\..\DBMS\DBMSManager\src\InterbaseManagerM.cpp(164): error C2664: 'SQLAllocHandle' : impossible de convertir le paramètre 3 de 'cli::interior_ptr<Type>' en 'SQLHANDLE *'
    1>          with
    1>          [
    1>              Type=SQLHANDLE
    1>          ]
    1>          Impossible de convertir un type managé en type non managé
    Je ne vois pas à quoi le compilateur fait référence en marquant cli::interior_ptr<T>?


    Jean Noël Martin




    vendredi 28 février 2014 15:23
  • Les problèmes de compilation sont solubles sous deux modifications: on est passé par des pointeurs dans les déclarations

    namespace SpecificationChecker
    {
        using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
    	using namespace System::IO;
    
    	ref class CInterbaseManagerM
    	{
    	private:
    		static SQLHANDLE* sqlenvhandle;    
    		static SQLHANDLE* sqlconnectionhandle;
    		static SQLHANDLE* sqlstatementhandle;
    		static SQLRETURN retcode;
    	public:
    		CInterbaseManagerM::CInterbaseManagerM();
    		CInterbaseManagerM::~CInterbaseManagerM();
    		static void CInterbaseManagerM::edit( char* final_err_buff);
    		static erc CInterbaseManagerM::ConnectServer(std::wstring wsUserName, std::wstring wsPassword, std::wstring wsHost);
    		static List<ElementSemanticM^>^ CInterbaseManagerM::ExecuteSelectRequestAndReadElement(std::wstring wsRequest, unsigned long* dwNbResultFound);
    		static List<ElementLinksM^>^ CInterbaseManagerM::ExecuteSelectAndLinkRequest( std::wstring wsRequest, ElementSemanticM^ pEnreg, unsigned long  &dwNbResultFound);
    		static erc CInterbaseManagerM::GetWideString(short shIndexField, std::wstring & wsStringValue);
    		static List<ElementWork^>^ CInterbaseManagerM::ExecuteSelectRequestAndReadWork(std::wstring wsRequest, unsigned long* dwNbResultFound);
    	}; 
    };

    et on a changer quelques types dans le code

    		if( ErrorCode == INIT_NO_ERROR || ErrorCode == 1)
    		{
    			if(SQL_SUCCESS!=SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, sqlenvhandle))
    			;
     			if(SQL_SUCCESS!=SQLSetEnvAttr(sqlenvhandle,SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0)) 
    			;
    			if(SQL_SUCCESS!=SQLAllocHandle(SQL_HANDLE_DBC, sqlenvhandle, sqlconnectionhandle))
    			;
    			SQLWCHAR retconstring[1024];
    			switch(SQLDriverConnect (sqlconnectionhandle, NULL, (SQLWCHAR*)L"DRIVER={SQL Server};SERVER=localhost, 1433;DATABASE=COHERENCE;UID=sa;PWD=Admin-123;", SQL_NTS, retconstring, 1024, NULL,SQL_DRIVER_NOPROMPT))
    			{
    				case SQL_SUCCESS_WITH_INFO:
    					show_error(SQL_HANDLE_DBC, (const SQLHANDLE*)sqlconnectionhandle);
    					break;
    				case SQL_INVALID_HANDLE:
    				case SQL_ERROR:
    					show_error(SQL_HANDLE_DBC, (const SQLHANDLE*)sqlconnectionhandle);
    					retcode = -1;
    					break;
    				default:
    					break;
    			}
    			if(retcode == -1)
    			;
     			if(SQL_SUCCESS!=SQLAllocHandle(SQL_HANDLE_STMT, sqlconnectionhandle, sqlstatementhandle))
    			;
    		}

    moyennant quoi le code compile

    Mais il reste une difficulté au link:

    1>InterbaseManagerM.obj : error LNK2019: symbole externe non résolu "extern "C" short __stdcall SQLGetDiagRecW(short,void *,short,wchar_t *,long *,wchar_t *,short,short *)" (?SQLGetDiagRecW@@$$J232YGFFPAXFPA_WPAJ1FPAF@Z) référencé dans la fonction "void __cdecl SpecificationChecker::show_error(unsigned int,void * const *)" (?show_error@SpecificationChecker@@$$FYAXIPBQAX@Z)
    1>InterbaseManagerM.obj : error LNK2019: symbole externe non résolu "extern "C" short __stdcall SQLDriverConnectW(void *,struct HWND__ *,wchar_t *,short,wchar_t *,short,short *,unsigned short)" (?SQLDriverConnectW@@$$J232YGFPAXPAUHWND__@@PA_WF2FPAFG@Z) référencé dans la fonction "public: static unsigned __int64 __clrcall SpecificationChecker::CInterbaseManagerM::ConnectServer(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >)" (?ConnectServer@CInterbaseManagerM@SpecificationChecker@@$$FSM_KV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@00@Z)
    1>InterbaseManagerM.obj : error LNK2019: symbole externe non résolu "extern "C" short __stdcall SQLSetEnvAttr(void *,long,void *,long)" (?SQLSetEnvAttr@@$$J216YGFPAXJ0J@Z) référencé dans la fonction "public: static unsigned __int64 __clrcall SpecificationChecker::CInterbaseManagerM::ConnectServer(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >)" (?ConnectServer@CInterbaseManagerM@SpecificationChecker@@$$FSM_KV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@00@Z)
    1>InterbaseManagerM.obj : error LNK2019: symbole externe non résolu "extern "C" short __stdcall SQLAllocHandle(short,void *,void * *)" (?SQLAllocHandle@@$$J212YGFFPAXPAPAX@Z) référencé dans la fonction "public: static unsigned __int64 __clrcall SpecificationChecker::CInterbaseManagerM::ConnectServer(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >)" (?ConnectServer@CInterbaseManagerM@SpecificationChecker@@$$FSM_KV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@00@Z)

    il semble qu'il y ait un assembly qui manque: lequel. Je suppose microsoft.sqlserver.types, mais je ne le trouve pas.

    If not, you can locate the assembly manually - it's located in /Program Files/Microsoft SQL Server/100/SDK/Assemblies/Microsoft.SqlServer.Types.dll

    Mais cet include ne suffit pas? quel est la dll qui implémente les symboles non résolus? J'ai essayé tous celles qui étaient dans le SDK sans succès.


    Jean Noël Martin




    • Marqué comme réponse JeanNoel53 dimanche 2 mars 2014 19:04
    • Non marqué comme réponse JeanNoel53 dimanche 2 mars 2014 19:42
    • Modifié JeanNoel53 lundi 3 mars 2014 08:21
    dimanche 2 mars 2014 10:46
  • Bonjour

    Vous devez ajouter odbc32.lib  comme c’est  écrit ici : http://msdn.microsoft.com/fr-fr/library/ba1z7822.aspx

    Mais je dirais que ce n'est pas le cas d’utiliser ODBC. Je dirais que la solution 4 s'applique mieux pour vous.  ODBC c'est un pilote intermédiaire qui nécessite une configuration supplémentaire.

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.


    lundi 3 mars 2014 08:52
    Modérateur
  • Merci

    mais je n'ai pas sur mon computer de repertoire C:\Program Files\Common Files

    mais j'ai C:\Program Files\Fichiers Communs

    Je teste la solution 4 et je reviens: J'ai toujours un manquant: SQLGetDiagRecW qui est résolue par odbc32.lib


    Jean Noël Martin







    lundi 3 mars 2014 09:08
  • Bonjour

    Pour récupérer le répertoire, dans l'invite de commande vous écrivez :
    set CommonProgramFiles
    Qu'est qu'il retourne?

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.


    lundi 3 mars 2014 09:50
    Modérateur
  • Le fichier odbc32.lib était la bonne réponse.

    Je  teste et je reviens.

    Le programme link mais ne démarre pas il donne mais à l'exécution je tombe sur une exception DebugAssertionFailed sur la donnée _crtIsValidHeapPointer(pUserData);


    Jean Noël Martin



    lundi 3 mars 2014 10:01
  • Bonjour

    On doit voir le code pour avancer.
    Aucune référence jusqu’a  présent sur pDatata ou crtIsValidHeapPointer. 

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.



    mardi 4 mars 2014 13:14
    Modérateur
  • Oui, mais quel parti du code.   L'exception se produit dans une partie du code de microsoft avant de rentrer dans le code applicatif. Je suppose qu'on est dans le code du chargeur. Le projet est dans l'état actuel une structure d’accueil avec très peu de code applicatif. J'ai modifié le projet pour supprimer toute mention à IBPP, et ça a déplacé le problème toujours dans le chargeur dans une méthode non disponible de nom ntdll.dll!KiFastSystemCallRet(). Ce fait apparait quand on charge le fichier InterbaeManagerM Qui inclus le code du connect. je vous le met en pièce incluse Le h ;d'abord:

    /*******************************************************************************
     * NOM: 
     * ROLE: 
     * HISTORIQUE:
        * 05/05/2001, xxx, initial version
    *******************************************************************************/
    #ifndef INTERBASEMANAGERM_H
    #define INTERBASEMANAGERM_H
    /*_____INCLUDE-FILES__________________________________________________________*/
    /*_____GLOBAL-DEFINE__________________________________________________________*/
    /*_____GLOBAL-TYPES___________________________________________________________*/
    namespace SpecificationChecker
    {
        using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
    	using namespace System::IO;
    
    	ref class CInterbaseManagerM
    	{
    	private:
    		
    	public:
    		CInterbaseManagerM::CInterbaseManagerM();
    		CInterbaseManagerM::~CInterbaseManagerM();
    		static void CInterbaseManagerM::edit( char* final_err_buff);
    		static erc CInterbaseManagerM::ConnectServer(std::wstring wsUserName, std::wstring wsPassword, std::wstring wsHost);
    		static List<ElementSemanticM^>^ CInterbaseManagerM::ExecuteSelectRequestAndReadElement(std::wstring wsRequest, unsigned long* dwNbResultFound);
    		static List<ElementLinksM^>^ CInterbaseManagerM::ExecuteSelectAndLinkRequest( std::wstring wsRequest, ElementSemanticM^ pEnreg, unsigned long  &dwNbResultFound);
    		static erc CInterbaseManagerM::GetWideString(short shIndexField, std::wstring & wsStringValue);
    		static List<ElementWork^>^ CInterbaseManagerM::ExecuteSelectRequestAndReadWork(std::wstring wsRequest, unsigned long* dwNbResultFound);
    	}; 
    };
    #endif

    le C+= ensuite:

    /*------------------------------------------------------------------------------------------------*/
    /* Global conception    : 06-13-2003 ; 10:44:49                                                                                                                                                       */
    /* Specification        : 23-05-2003 ; 16:33:41                                                   */
    /* ALITEC                                                                                         */
    /* Rue Leonard de vinci                                                                           */
    /* 53061 LAVAL CEDEX 09                                                                           */
    /* (c) Copyright ALITEC                                                                           */
    /*------------------------------------------------------------------------------------------------*/
    /*******************************************************************************
     * NOM:
     * ROLE:
     * HISTORIQUE:
        * 05/05/2001, xxx, initial version
    *******************************************************************************/
    #pragma managed
    /*_____INCLUDE-FILES__________________________________________________________*/
    
    #include "StdAfx.h"
    #include "AlignStructure.h"
    #include "Macro.h"
    #include "Message.h"
    #include "Enumerations.hpp"
    #include "EnumerationM.hpp"
    #include "StructureM.h"
    #include "TypeDefs.hpp"
    #include "TypeDefsM.hpp"
    #include "POSM.h"
    #include "ClasseAlignerManaged.hpp"
    #include "Database.h"
    #include "StrConv.h"
    #include "InterbaseManagerM.hpp"
    /*_____LOCAL-DEFINE___________________________________________________________*/
    #define longueur 1024
    /*_____LOCAL-TYPES____________________________________________________________*/
    /*_____GLOBAL-DATA____________________________________________________________*/
    
    char* sDest;
    bool							  m_bServerConnected;
    static char                       final_err_buff[2048];
    static char * p1;
    static char * p2;
    static char * p3;
    static char * p4;
    static char * p5;
    static char * p6;
    static char * p7;
    static char * p8;
    static char * p9;
    static char* p10;
    #import "C:\Program Files\Fichiers Communs\System\ADO\msado15.dll" \
    no_namespace rename("EOF", "EndOfFile")
    namespace SpecificationChecker
    {
        using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
    	using namespace System::IO;
    	using namespace System::Runtime::InteropServices;
    	using namespace msclr::interop;
    //
    /*------------------------------------------------------------------------------------------------*/
    /*Name          Constructeur                                                                      */
    /*Role                                                                                            */
    /*Interface                                                                                       */
    /*In            None                                                                              */
    /*In/Out        None                                                                              */
    /*Result        None                                                                              */
    /*Constraints   None                                                                              */
    /*Resources                                                                                       */
    /*PreCondition                                                                                    */
    /*------------------------------------------------------------------------------------------------*/
    //
    	CInterbaseManagerM::CInterbaseManagerM()
    	{
    		;
    	};
    //
    /*------------------------------------------------------------------------------------------------*/
    /*Name          Destructeur                                                                       */
    /*Role                                                                                            */
    /*Interface                                                                                       */
    /*In            None                                                                              */
    /*In/Out        None                                                                              */
    /*Result        None                                                                              */
    /*Constraints   None                                                                              */
    /*Resources                                                                                       */
    /*PreCondition                                                                                    */
    /*------------------------------------------------------------------------------------------------*/
    //
    	CInterbaseManagerM::~CInterbaseManagerM()
    	{
    		;
    	};
    //
    	void show_error(unsigned int handletype, const SQLHANDLE* handle)
    	{
    		wchar_t sqlstate[1024];
    		wchar_t message[1024];
    		if(SQL_SUCCESS == SQLGetDiagRec(handletype, *handle, 1, sqlstate, NULL, message, 1024, NULL))
    		{
    			char* ErrorMessage;
    			ErrorMessage = objStrConv.awcstombs( (wchar_t*)message);
    			strcpy_s( final_err_buff, 2048, ErrorMessage);
    			objStrConv.StrFreeA( ErrorMessage);
    		    CInterbaseManagerM::edit( final_err_buff);
    		}
    	};
    /*------------------------------------------------------------------------------------------------*/
    /*Name          ConnectServer                                                                     */
    /*Role          Initialize member variables with the parameters                                   */
    /*Interface                                                                                       */
    /*In            UserName, Password, Host                                                          */
    /*In/Out        None                                                                              */
    /*Result        Error code                                                                        */
    /*Constraints   None                                                                              */
    /*Resources                                                                                       */
    /*PreCondition                                                                                    */
    /*------------------------------------------------------------------------------------------------*/
    //PROC ConnectServer(In : UserName, Password, Host
    //                   Result : Error code)
    	erc CInterbaseManagerM::ConnectServer(std::wstring wsUserName, std::wstring wsPassword, std::wstring wsHost)
    	{
    	//DATA
    	//
    		enum enDisconnectServerError
    		{
    		  ERROR_TSQLQUERY_POINTER_NOT_NULL = 1,
    		  ERROR_TSQLCONNECTION_POINTER_NOT_NULL,
    		  ERROR_SERVER_CONNECTED,
    		  ERROR_CONNECTION_COMPONENTS_CREATION,
    		};
    		char* aTemp;
    		bool bIsConnected;
    		char sUserName[256];
    		char sPassword[256];
    		char sDatabasePath[256];
    		char sServerName[256];
    		size_t len;
    		errno_t error;
    		HRESULT hr = S_OK;
    		erc ErrorCode = INIT_NO_ERROR;
    	//ATAD
    	//DO
    	//  [Create the TSQLConnection object "m_pTSQLConnection"]
    	//  [Create the TSQLQuery object "m_pTSQLQuery"]
    		len = strlen( "LocalHost");
    		strcpy_s( sServerName, len + 1, "LocalHost");
    		sServerName[len] = 0;
    	//  [Set the value of UserName ("m_pTSQLConnection") with "UserName"]
    		len = wcslen( wsUserName.c_str());
    		aTemp = objStrConv.awcstombs( (wchar_t* ) wsUserName.c_str());
    		len = strlen( aTemp);
    		error = strcpy_s( (char*)sUserName, len + 1, aTemp);
    		sUserName[len] = 0;
    		objStrConv.StrFreeA( aTemp);
    	//  [Set the value of Password ("m_pTSQLConnection") with "Password"]
    		len = wcslen( wsPassword.c_str());
    		aTemp = objStrConv.awcstombs( (wchar_t* ) wsPassword.c_str());
    		len = strlen( aTemp);
    		error = strcpy_s( (char*)sPassword, len + 1, aTemp);
    		sPassword[len] = 0;
    		objStrConv.StrFreeA( aTemp);
    		// [Set the value of HostName ("m_pTSQLConnection") with "Host"]
    		len = wcslen( wsHost.c_str());
    		aTemp = objStrConv.awcstombs( (wchar_t* ) wsHost.c_str());
    		len = strlen( aTemp);
    		error = strcpy_s( (char*)sDatabasePath, len + 1, aTemp);
    		sDatabasePath[len] = 0;
    		objStrConv.StrFreeA( aTemp);
    	//  [Affect "m_pTSQLConnection" to "m_pTSQLQuery"]
    	//  [Set "m_bServerConnected" at true]
    		// ErrorCode = CoInitialize(NULL);
    		if( ErrorCode == INIT_NO_ERROR || ErrorCode == 1)
    		{
    			CoInitialize(NULL);
    			// Define string variables.
    			_bstr_t strCnn("Provider=SQLOLEDB.1;Persist Security Info=False;UserID=username;Password=passwd;Initial Catalog=database;Data Source=(local);Integrated Security=SSPI;");
     			_RecordsetPtr pRstAuthors = NULL;
     			// Call Create instance to instantiate the Record set
    			hr = pRstAuthors.CreateInstance(__uuidof(Recordset));
    			if(FAILED(hr))
    			{
    				printf("Failed creating record set instance\n");
    				return 0;
    			}
    		}
    		else
    		   bIsConnected = false;
    		ErrorCode = INIT_NO_ERROR;
    		m_bServerConnected = true;
    		return(ErrorCode);
    	//OD
    	}
    


    Jean Noël Martin








    mardi 4 mars 2014 16:50
  • Maintenant c'est plus clair.

    Voir la réponse dans ce thread:http://social.msdn.microsoft.com/Forums/vstudio/en-US/d3e57864-9779-4937-9438-fb871bea27f0/debug-assertion-failed-crtisvalidheappointer-puserdata-?forum=vclanguage

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    mercredi 5 mars 2014 09:29
    Modérateur
  • C'est précisément l'instruction

    _bstr_t strCnn("Provider=SQLOLEDB.1;Persist Security Info=False;UserID=username;Password=passwd;Initial Catalog=database;Data Source=(local);Integrated Security=SSPI;");

    qui provoque l'erreur. Je regarde le thread que vous avez indiqué, mais je ne vois pas au premier coup d' œil ce que je peut en tirer. je jette un coup d’œil plus conséquent. Le thread que vous me proposez tient a l'erreur résolue en sortant all_in_one de IBPP. Pas à celle actuelle Je vous donne le log de l'exécution pour documentation:

    Exception de première chance à 0x7c812fd3 (kernel32.dll) dans SpecificationChecker.exe : Exception Microsoft C++ : [rethrow] à l'emplacement mémoire 0x00000000..
    Une exception non gérée du type 'System.TypeInitializationException' s'est produite dans Module inconnu.
    
    Informations supplémentaires : Une exception a été levée par l'initialiseur de type pour '<Module>'.


    Jean Noël Martin





    mercredi 5 mars 2014 10:42
  • J'ai trouvé une méthode plus simple pour le connect ci après.

    La base de données est installée sur mon ordinateur, par la procédure de miscosoft. je vous donne le code

    			SqlConnection^ myConnection = gcnew SqlConnection();
    			myConnection->ConnectionString = "Persist Security Info=False;Integrated Security=SSPI;database=COHERENCE;server=SQLServer";
    			myConnection->Open();

    il faut retravailler la configuration de la BDD et la ligne de ConnectionString car le status de l'exécution provoque une erreur:

    Une exception non gérée du type 'System.Data.SqlClient.SqlException' s'est produite dans System.Data.dll
    
    Informations supplémentaires : Une erreur liée au réseau ou spécifique à l'instance s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur est introuvable ou n'est pas accessible. Vérifiez que le nom de l'instance est correct et que SQL Server est configuré pour autoriser les connexions distantes. (provider: Named Pipes Provider, error: 40 - Impossible d'ouvrir une connexion à SQL Server)

    J'ai essayé avec la ligne de commande "Persist Security Info=False;Integrated Security=SSPI;database=COHERENCE;server=.\SQLExpress";

    et également avec "Persist Security Info=False;Integrated Security=SSPI;AttachDbFilename=C:\\Program Files\\Microsoft SQL Server\MSSQL10SQLEXPRESS\\DATA\COHERENCE.mdf;database=COHERENCE;server=.\SQLExpress";

    mais ça n'a rien changé.

    De plus: J'ai deux outils pour accéder à la base:

    Microsoft Visual Studio 2008 avec lequel je ne peux pas me connecter à SQLServer: il affiche: impossible d'établir une connexion: vérifier que le serveur fonctionne.

    J'ai essayé .\SQLServer, .\SQLServr, .\SQLExpess, LocalHost, SQLServer, SQLExpress sans succès Que faut il mettre dans le champ serveur? Je retiens provisoirement que SQLExpress prend plus longtemps pour répondre que la connexion a échouée.

    J'ai séléctioné SQLServeur 2008 dans le Choix de Visual Studio

    Dans le dernier essai avec .\SQLExpress le message d'erreur à changé: il est : impossible d'établir une connexion avec le redirecteur. Vérifiez que le service " SQL Browser" est en cours d’exécution.

    Microsoft SQL Management Studio, avec lequel je me connecte sans difficulté à la base.

    Une première étape serait donc d'obtenir une connexion avec Visual Studio.

    Quelqu'un peut il m'aider sur les actions a faire?


    Jean Noël Martin









    mardi 18 mars 2014 18:04
  • il fallait reprendre la chaine comme suit;

    			SqlConnection^ myConnection = gcnew SqlConnection();
    			myConnection->ConnectionString = "Integrated Security=true;User Instance=true;AttachDbFilename=C:\\Program Files\\Microsoft SQL Server\\MSSQL10.SQLEXPRESS\\MSSQL\\DATA\\COHERENCE.mdf;database=COHERENCE;server=ALLIANCE-EA8F7A\\SQLEXPRESS";
    			myConnection->Open();
    			myCommand = myConnection->CreateCommand();
    


    Jean Noël Martin

    • Marqué comme réponse JeanNoel53 mardi 8 avril 2014 09:07
    mardi 8 avril 2014 09:07