Herstellen einer Verbindung zur SQLExpress-Datenbank vom Clientcomputer mithilfe von C++ SQLDriverConnect() oder SQLConnC++

Programme in C++. Entwicklerforum
Anonymous
 Herstellen einer Verbindung zur SQLExpress-Datenbank vom Clientcomputer mithilfe von C++ SQLDriverConnect() oder SQLConn

Post by Anonymous »

Ich habe eine von VS2022 erstellte MFC/C++-Anwendung, die gut mit SQLExpress auf meinem Entwicklungscomputer (Win 11 Pro) funktioniert, den wir „Host“ nennen. Die Computer befinden sich im selben Netzwerk und Gateway und ich kann im Windows Explorer nach freigegebenen Ordnern auf dem Host suchen, indem ich den Host-Computernamen oder die IP-Adresse verwende.
Ich versuche, die Anwendung auf einem Client-Computer (Win 11 Home) auszuführen und eine Verbindung zu einer Datenbank auf dem Host-Computer herzustellen.
Ich habe eine Reihe von Schritten durchlaufen, ohne meine Anwendung auszuführen, um die Verbindung zu testen und. Es hat eine Weile gedauert, die Dinge zu konfigurieren, aber mit SQL Management Studio kann ich eine Verbindung vom Client-Computer zum Host-Computer herstellen und alle Tabellen sehen. Ich habe in diesem Thread über diesen Prozess gepostet.
Ich habe verschiedene Verbindungsmethoden ausprobiert, sowohl mit SQLConnect() als auch mit SQLDriverConnect() und bin völlig verblüfft. Eine Handvoll der verschiedenen Versuche können Sie hier sehen (einige scheitern natürlich auch auf dem Host):

Code: Select all

//strcpy_s((char*)szConnStrIn, sizeof(szConnStrIn), "DRIVER={ODBC Driver17 for SQL Server};SERVER=SQLEXPRESS;DATABASE=master;Trusted_Connection=Yes;");
//strcpy_s((char*)szConnStrIn, sizeof(szConnStrIn), "DSN=SQLExpress;DATABASE=;Trusted_Connection=Yes;");
//strcpy_s((char*)szConnStrIn, sizeof(szConnStrIn), "DSN=\\SQLExpress;DATABASE=;Trusted_Connection=Yes;");
//strcpy_s((char*)szConnStrIn, sizeof(szConnStrIn), "Server=\\SQLExpress;DSN=SQLExpress;Trusted_Connection=YES;");
//strcpy_s((char*)szConnStrIn, sizeof(szConnStrIn), "Server=tcp:;DSN=SQLEXPRESS;DATABASE=;UId=;PWD=
;Trusted_Connection=NO;TrustServerCertificate=yes;ENCRYPT=no;");
//strcpy_s((char*)szConnStrIn, sizeof(szConnStrIn), "Server=;DSN=SQLEXPRESS;DATABASE=;UId=;PWD=;Trusted_Connection=NO;TrustServerCertificate=yes;ENCRYPT=no;");
//strcpy_s((char*)szConnStrIn, sizeof(szConnStrIn), "Server=tcp:,1433;DSN=SQLEXPRESS;DATABASE=;UId=;PWD=;Trusted_Connection=NO;TrustServerCertificate=yes;ENCRYPT=no;");
strcpy_s((char*)szConnStrIn, sizeof(szConnStrIn), g_sConnectionString);
iReturn = SQLDriverConnect(sqlConnection, AfxGetMainWnd()->GetSafeHwnd(), szConnStrIn, SQL_NTS, szConnStrOut, sizeof(szConnStrOut), &pcbConnStrOut, SQL_DRIVER_NOPROMPT);

//iReturn = SQLConnect(sqlConnection, (SQLCHAR*)dsnName, SQL_NTS, (SQLCHAR*)userID, SQL_NTS, (SQLCHAR*)passwd, SQL_NTS);
DiagnosticOutput(iReturn, "BECSQLDatabase::InitSystem()", sqlConnection);
ErrorOutput("BECSQLDataBase::InitSystem()", sqlConnection);
Viele dieser Optionen haben gut funktioniert, um eine Verbindung zur Datenbank auf dem Host-Computer herzustellen, aber keine hat auf dem Client-Computer funktioniert. Hinweis: Ich habe die Verbindungszeichenfolge fest codiert und bin schließlich schlau geworden und habe sie in eine Textdatei eingefügt, die in CString g_sConnectionString geladen wird, damit ich Änderungen daran einfach testen kann.
Der Fehler, den ich von der Diagnose erhalte, ist „Datenquellenname nicht gefunden und kein Standardtreiber angegeben“
Kann jemand vorschlagen, was mir hier fehlt? Die Angabe des Treibers scheint nicht zu helfen, aber vielleicht habe ich den falschen Treiber oder die falsche Syntax.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post