Проверка строки подключения SQL в C ++ (WIN32) - PullRequest
1 голос
/ 03 августа 2011

Я хотел бы проверить строку подключения на сервере SQL 2008.Проблема в том, что я должен написать все это с использованием C ++ (WIN32).Есть ли простой способ сделать это?Я прогуглил это, но это довольно сложно, так как у меня нет большого опыта работы с C ++.

Любая помощь будет оценена!

Ответы [ 2 ]

0 голосов
/ 03 августа 2011

Здесь есть простой пример C ++ здесь

// SQLConnect_ref.cpp
// compile with: odbc32.lib
#include <windows.h>
#include <sqlext.h>

int main() 
{
   SQLHENV henv;
   SQLHDBC hdbc;
   SQLHSTMT hstmt;
   SQLRETURN retcode;

   SQLCHAR * OutConnStr = (SQLCHAR * )malloc(255);
   SQLSMALLINT * OutConnStrLen = (SQLSMALLINT *)malloc(255);

   // Allocate environment handle
   retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);

   // Set the ODBC version environment attribute
   if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
      retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); 

      // Allocate connection handle
      if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
         retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); 

         // Set login timeout to 5 seconds
         if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
            SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)5, 0);

            // Connect to data source
            retcode = SQLConnect(hdbc, (SQLCHAR*) "NorthWind", SQL_NTS, (SQLCHAR*) NULL, 0, NULL, 0);

            // Allocate statement handle
            if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
               retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt); 

               // Process data
               if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
                  SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
               }

               SQLDisconnect(hdbc);
            }

            SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
         }
      }
      SQLFreeHandle(SQL_HANDLE_ENV, henv);
   }
}
0 голосов
/ 03 августа 2011

Строка подключения должна быть одинаковой независимо от того, на каком языке вы работаете. Чтобы просто проверить строку подключения, вы можете сделать это на языке .NET по вашему выбору или на любом другом, с которым вы знакомы.

Вот ссылка на двухстраничное руководство , которое вы можете использовать, чтобы быстро собрать приложение-прототип C ++, которое будет подключаться к БД через ADO.

Но в .NET тестирование соединения можно выполнить всего несколькими строками кода:

try
{
   using (SqlConnection conn = new SqlConnection("connection string here..."))
   {
      conn.Open();
    }
}
catch(Exception ex)
{
   MessageBox.Show(ex.Message);
}

Или вы можете использовать готовое приложение , подобное этому , для проверки строки подключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...