2

私は自分の macbook pro でプログラミングを行っており、商用製品をプログラミングするために会社の MSSQL サーバーに接続する必要があります。

実際にどのように接続しますか?MSDN の Web サイトを見ていましたが、よくわかりませんでした。

私のデモでは、XCODE 内に新しいプロジェクトを作成し、データを出力するコンソール アプリケーションを作成するだけでした。セットアップしたら、接続でさまざまなことを実装します。

編集:いくつかのコードを追加しました:

#include <iostream>
//#include <windows.h>
#include <sqlext.h>
#include <sqltypes.h>
#include <sql.h>

using namespace std;

int main(int argc, const char * argv[])
{
SQLHENV hEnv;
SQLHDBC hDbc;
string connection = "AAA";
string db = "DB";
string user = "user";
string pass = "password";
string data = "DRIVER={SQL Server Native Client 11.0};SERVER="+connection+";DATABASE="+db+";UID="+user+";PWD="+pass+";";
//SQLCHAR* pwszConnStr = (SQLCHAR*)("Driver={SQL Server Native Client 11.0};Server="+connection+";Database="+db+";Uid="+user+";Pwd="+pass+";");
SQLCHAR* pwszConnStr = (SQLCHAR*)data.c_str();
//cout  << data << endl;
cout  << pwszConnStr << endl;
//error seems to occur in 1 of the 3 SQL statements below.
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv);
SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hDbc);

RETCODE rc = SQLDriverConnect(hDbc, NULL, pwszConnStr, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_PROMPT);

if(rc == SQL_SUCCESS){
    cout << "Connected to the Database" << endl;
}else{
    cout << "No Connection Established" << endl;
}


return 0;
}

コンパイルに失敗しました。これは、windows.h ファイルをコメントアウトしたことに関連していると考えています。問題は、windows.h が私の macbook pro で見つからず、VStudios での開発時にあると考えることです。

4

3 に答える 3

4

C ++では、QTライブラリhttp://qt-project.org/downloadsを使用することをお勧めします

...
#include <QtSql>
...

int main(int argc, char *argv[])
{
    ....

    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setDatabaseName("DRIVER={SQL Server};Server=YOUR SERVER;Database=YOUR DB NAME;User ID=YOUR USER;Password=YOUR PASS;Trusted_Connection=yes;");

    if(!db.open())
    {
       qDebug() << db.lastError().text();

       return 0;
    }

    ....
}
于 2012-11-05T19:50:13.623 に答える
1

Windows から移行すると、Microsoft のドキュメントの使用は制限されます。ODBC API に関する彼らの議論は問題ありませんが、Visual Studio やその他の Windows 固有のコンポーネントに関する内容は一般的に無視されるべきです。

iODBC.org では、いくつかの指針を提供できます。特に、無料でオープン ソースの iODBC SDKに同梱されている iODBC Demo.app や iODBC Test.command のソースを調べた場合はそうです。

また、私の雇用主の製品など、商用サポートされている ODBC ドライバーを使用して開発およびテストすることも有益です。

于 2012-11-05T21:32:49.913 に答える
1

stdafx.h で:

#pragma once

#include <windows.h> //!first include
#include <sqltypes.h> //!

#include "targetver.h"
#include <stdio.h>
#include <tchar.h>

yourMainFile.cpp で:

 #include "stdafx.h"
 #include <iostream>
 #include <sql.h>
 #include <sqlext.h>

 using namespace std;

 int _tmain(int argc, _TCHAR* argv[])
 {
    RETCODE rc;        // ODBC return code 
    HENV henv;         // Environment 
    HDBC hdbc;         // Connection handle 
    HSTMT hstmt;       // Statement handle 
    SDWORD cbData;     // Output length of data

    // attempt to connect to the ODBC database 
    char db[] = "MSSQLSERVER"; // Server name 
    cout << "Attempting to open database " << db << "..." << endl; 
    SQLAllocEnv(&henv); 
    SQLAllocConnect(henv, &hdbc); 
    rc = SQLConnect(hdbc, (unsigned char*)db, SQL_NTS, 0, 0, 0, 0);
    cout << rc << endl;

    // if not successful, quit 
    if ((rc != SQL_SUCCESS) && (rc != SQL_SUCCESS_WITH_INFO)) 
    { 
        cout << "Cannot open database -- make sure ODBC is configured properly."      << endl; 
        SQLFreeConnect(hdbc); 
        SQLFreeEnv(henv); 
        cout << "Press ENTER to continue." << endl; 
        cin.get(); 
        return 1; 
    }
    cout << "Hello, SQL-Server!" << endl;
    return 0;
}
于 2015-08-08T16:49:01.393 に答える