C++/CLI SQL 使用带有参数的 ConnectionString 作为字符串
C++/CLI SQL use ConnectionString with parameters as string
正在尝试连接到 SQL VS2019 C++/CLI 应用程序中的服务器。
此代码对我有用:
#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;
}
但是当我将 ConnectionString 更改为:
cnn.ConnectionString = "Server="+ server +";Integrated Security=SSPI;database=master";
我收到编译器错误:
Error (active) E1767 function
"System::Data::SqlClient::SqlConnection::ConnectionString::set" cannot
be called with the given argument list
当我尝试使用 SqlConnectionStringBuilder 时出现同样的错误:
SqlConnectionStringBuilder sqlBuilder;
sqlBuilder.DataSource = server;
那么如何在ConnectionString中使用字符串类型的参数呢?
在 CLR/CLI c++ 中你不应该使用有歧义的 string
。它可能是 std::string
,它与 .NET 的 string
不同。特别是很难判断何时使用:using namespace std;
.
你应该做的是使用 String^
这是对 .NET class.
的引用
所以你的代码应该是这样的:
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"));
正在尝试连接到 SQL VS2019 C++/CLI 应用程序中的服务器。 此代码对我有用:
#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;
}
但是当我将 ConnectionString 更改为:
cnn.ConnectionString = "Server="+ server +";Integrated Security=SSPI;database=master";
我收到编译器错误:
Error (active) E1767 function "System::Data::SqlClient::SqlConnection::ConnectionString::set" cannot be called with the given argument list
当我尝试使用 SqlConnectionStringBuilder 时出现同样的错误:
SqlConnectionStringBuilder sqlBuilder;
sqlBuilder.DataSource = server;
那么如何在ConnectionString中使用字符串类型的参数呢?
在 CLR/CLI c++ 中你不应该使用有歧义的 string
。它可能是 std::string
,它与 .NET 的 string
不同。特别是很难判断何时使用:using namespace std;
.
你应该做的是使用 String^
这是对 .NET class.
所以你的代码应该是这样的:
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"));