Connection对象的__________属性由Provider和Data Source两部分组成。
时间: 2024-04-01 09:31:53 浏览: 51
Connection对象的ConnectionString属性由Provider和Data Source两部分组成。其中Provider部分指定数据提供程序,Data Source部分指定数据源的位置。例如,Microsoft OLE DB Provider for SQL Server提供程序的ConnectionString属性值可能为"Provider=SQLOLEDB;Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;"。
相关问题
bool CSqlConn::Open(string strDbName, string strUser, string strPwd, string strServer, string strProvider) { try { HRESULT hr = m_pConn.CreateInstance(__uuidof(Connection)); if (FAILED(hr)) throw _com_error(hr); CStringW strConn; strConn.Format(L"Provider=%s;Data Source=%s;Initial Catalog=%s;User ID=%s;Password=%s;", hr = m_pConn->Open(_bstr_t(strConn), "", "", adConnectUnspecified)); if (FAILED(hr)) throw _com_error(hr); } catch (_com_error e) { wcout << "Failed to open database: " << e.ErrorMessage() << endl; return false; } return true; }错误的
这段代码存在一些问题,可能会导致编译错误或运行时错误。首先,`CStringW` 是 MFC 中的一个类,而这段代码没有包含 MFC 头文件,因此编译会失败。其次,`strConn.Format` 的语法也不正确,应该是 `strConn.Format(L"Provider=%s;Data Source=%s;Initial Catalog=%s;User ID=%s;Password=%s;", strProvider.c_str(), strServer.c_str(), strDbName.c_str(), strUser.c_str(), strPwd.c_str());`。最后,`m_pConn->Open` 的参数中缺少一个参数,应该是 `adModeUnknown`。因此,我建议您修改代码如下:
```
bool CSqlConn::Open(string strDbName, string strUser, string strPwd, string strServer, string strProvider) {
try {
HRESULT hr = m_pConn.CreateInstance(__uuidof(Connection));
if (FAILED(hr)) throw _com_error(hr);
CStringW strConn;
strConn.Format(L"Provider=%s;Data Source=%s;Initial Catalog=%s;User ID=%s;Password=%s;",
strProvider.c_str(), strServer.c_str(), strDbName.c_str(), strUser.c_str(), strPwd.c_str());
hr = m_pConn->Open(_bstr_t(strConn), "", "", adModeUnknown);
if (FAILED(hr)) throw _com_error(hr);
}
catch (_com_error e) {
wcout << "Failed to open database: " << e.ErrorMessage() << endl;
return false;
}
return true;
}
```
_ConnectionPtr conn; // ADO 连接对象public: // 构造函数,连接数据库 Database(string server, string database, string username, string password) { try { conn.CreateInstance(__uuidof(Connection)); conn->ConnectionString = "Provider=SQLOLEDB.1;Data Source=" + server + ";Initial Catalog=" + database + ";User ID=" + username + ";Password='" + password + "';"; conn->Open("", "", "", adConnectUnspecified); } 严重性 代码 说明 项目 文件 行 禁止显示状态 错误(活动) E1767 无法使用给定参数列表调用 函数 "Connection15::PutConnectionString"
这个错误的原因是 Connection15 类型没有 PutConnectionString 方法,应该使用 Connection15 类型的 ConnectionString 属性来设置连接字符串。
请尝试修改代码如下:
```cpp
conn->ConnectionString = "Provider=SQLOLEDB.1;Data Source=" + server + ";Initial Catalog=" + database + ";User ID=" + username + ";Password='" + password + "';";
```
这样就可以正确地设置连接字符串了。
阅读全文