在c++ (WIN32)中测试SQL连接字符串

Test SQL Connection String in C++ (WIN32)

本文关键字:测试 SQL 连接 字符串 c++ WIN32      更新时间:2023-10-16

我想检查SQL 2008服务器上的连接字符串。问题是,我必须使用c++ (WIN32)编写整个东西。有什么简单的方法吗?我已经在谷歌上搜索过了,但是很难,因为我没有太多的c++经验。

任何帮助将不胜感激!

无论使用什么语言实现,连接字符串都应该是相同的。要简单地测试连接字符串,您可以使用您选择的。net语言或任何您熟悉的语言。

这里有一个2页教程的链接,你可以用它来快速地把一个c++原型应用程序放在一起,它将通过ADO连接到数据库。

但是在。net中,测试一个连接只需要几行代码:

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

或者你可以使用一个现成的应用程序来测试一个连接字符串

这里有一个简单的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);
   }
}