C++/CLI SQL使用参数为字符串的ConnectionString

C++/CLI SQL使用参数为字符串的ConnectionString,sql,command-line-interface,c++-cli,Sql,Command Line Interface,C++ Cli,正在尝试连接到VS2019 C++/CLI应用程序中的SQL Server。 此代码适用于我: #include "pch.h" #include <iostream> #using < System.dll> #using < System.Data.dll> using namespace std; using namespace System; using namespace System::Data; using namespa

正在尝试连接到VS2019 C++/CLI应用程序中的SQL Server。 此代码适用于我:

#include "pch.h"
#include <iostream>

#using < System.dll>
#using < System.Data.dll>

using namespace std;
using namespace System;
using namespace System::Data;
using namespace System::Data::SqlClient;

bool ConnectToSQLServer(string server)
{
    SqlConnection cnn;
    cnn.ConnectionString = "Server=.\\SQLExpress;Integrated Security=SSPI;database=master";
    try
    {
        cnn.Open();
        cnn.Close();
        return true;
    }
    catch (SqlException ^ex)
    {
        return false;
    }

}

int main()
{
    if (ConnectToSQLServer(".\\SQLExpress"))
        printf("Connected!");
    else
        printf("Can not connect to SQL server!");

    return 0;
}
我发现编译器错误:

错误(激活)E1767功能 “System::Data::SqlClient::SqlConnection::ConnectionString::set”无法 使用给定的参数列表调用

尝试使用SqlConnectionStringBuilder时出现相同错误:

SqlConnectionStringBuilder sqlBuilder;

sqlBuilder.DataSource = server;

<如何在CalrnString中使用字符串类型?

< P> CLR/CLI C++中,不应该使用<代码>字符串< /C> >这是含糊的。它可能是
std::string
,它的类型与.NET的
string
不同。特别是,很难判断何时使用:
使用名称空间std

您应该做的是使用
String^
,它是对.NET类的引用

因此,您的代码应该类似于:

bool ConnectToSQLServer(String^ server)
{
    SqlConnection cnn;
    cnn.ConnectionString =  String::Format("Server={0};Integrated Security=SSPI;database=master", server);
    try
    {
        cnn.Open();
        cnn.Close();
        return true;
    }
    catch (SqlException ^ex)
    {
        return false;
    }
}
你可以这样称呼它:

ConnectToSQLServer(gcnew String(".\\SQLExpress"));

谢谢它使用起来非常简单
ConnectToSQLServer(gcnew String(".\\SQLExpress"));