listBookInfo("select * from Table_Book");
这一句显示错误:错误 C2664 “void CTestDlg::listBookInfo(CString)”: 无法将参数 1 从“const char [25]”转换为“CString” Test f:\summerholidayhomework\test\test\testdlg.cpp 119
不存在从 "const char [25]" 转换到 "ATL::CStringT<wchar_t, StrTraitMFC_DLL<wchar_t, ATL::ChTraitsCRT<wchar_t>>>" 的适当构造函数 Test f:\SummerHolidayhomework\Test\Test\TestDlg.cpp 119
//Ado数据库连接函数
void CTestDlg::listBookInfo(CString strSQL)
{
m_listBookInfo.DeleteAllItems(); // 首先清空列表视图中的所有数据
_ConnectionPtr m_pConnection; // 创建连接对象指针
m_pConnection.CreateInstance(_uuidof(Connection));// 创建连接对象实例
//在ADO操作中建议语句中要常用try...catch()来捕获错误信息
try
{
//打开本地SQL数据库Book.mdf
m_pConnection->Open("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=F:\SummerHolidayhomework\Test\Book.mdf;Integrated Security=Ture;Connect Timeout=30", "", "", adModeUnknown);
}
catch (_com_error e)
{
e.Error();
MessageBox(e.ErrorMessage());
MessageBox(e.Description());
return;
}
_RecordsetPtr m_pRecordset; // 创建记录集对象指针
m_pRecordset.CreateInstance(__uuidof(Recordset));//创建记录集指针对象实例
try
{
m_pRecordset->Open(
_variant_t(strSQL), // 打开记录集
m_pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic, // 动态光标
adLockOptimistic, // 乐观锁定方式
adCmdText // CommandText是文本命令
);
}
catch (_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
_variant_t var;
CString strTmp;
while (!m_pRecordset->adoEOF)
{
var = m_pRecordset->GetCollect("书号"); // 获取书号字段的值
strTmp = (LPCSTR)_bstr_t(var);
m_listBookInfo.InsertItem(0, strTmp);
var = m_pRecordset->GetCollect("书名"); // 获取书名字段的值
strTmp = (LPCSTR)_bstr_t(var);
m_listBookInfo.SetItemText(1, 1, strTmp);
var = m_pRecordset->GetCollect("类别"); // 获取类型字段的值
strTmp = (LPCSTR)_bstr_t(var);
m_listBookInfo.SetItemText(2, 2, strTmp);
var = m_pRecordset->GetCollect("单价"); // 获取单价字段的值
strTmp = (LPCSTR)_bstr_t(var);
m_listBookInfo.SetItemText(3, 3, strTmp);
//将记录集指针移动到下一条记录
m_pRecordset->MoveNext();
}
m_pRecordset->Close(); // 关闭记录集
m_pRecordset.Release(); // 释放记录集对象
m_pRecordset = NULL;
if (m_pConnection->State)
m_pConnection->Close(); // 关闭与数据库的连接
m_pConnection = NULL;
UpdateData(FALSE);
}
在字符串前加上_T(),如:listBookInfo(_T("select * from Table_Book"));