_RecordsetPtr Open抛异常
_RecordsetPtr Open抛异常
以下是相关代码
BOOL CAdoTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
if (!AfxOleInit())
{
AfxMessageBox(_T("初始化失败!"));
return FALSE;
}
try
{
//´创建connection连接对象
// m_pConnection.CreateInstance("ADODB.Connection");
m_pConnection.CreateInstance(_uuidof(Connection));
//设置连接字符串
_bstr_t strConnect= "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Test;Data Source=孙健;Initial File Name=E:\\公司界面试验版\\AdoTest\\Test.mdf";
// AfxMessageBox(strConnect,0,0);
// SERVER 和 UID,PWD的设定需要根据自己的情况
m_pConnection->Open(strConnect, "", "", adModeUnknown);
}
//捕捉异常
catch(_com_error e)
{
//显示错误信息
AfxMessageBox(e.Description());
}
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
BOOL CAdoTestDlg::OpenRecordSet(_RecordsetPtr &recPtr, CString &strSQL)
{
CAdoTestApp* pApp = (CAdoTestApp*)AfxGetApp();
// 创建记录集对象
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
// 因为它有时会经常出现一些想不到的错误
try
{
// 从数据库中打开表
recPtr->Open(strSQL.AllocSysString(),
pApp->m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch (_com_error e)
{
CString strError;
strError.Format(_T("警告:打开数据表时发生异常。 错误信息: %s"),\
e.ErrorMessage());
AfxMessageBox(strError);
return FALSE;
}
return TRUE;
}
void CAdoTestDlg::OnBnClickedButtonInsert()
{
// TODO: Add your control notification handler code here
CString strSQL;
UpdateData(TRUE);
// 打开纪录集,选择表名
strSQL = "select * from Name";
if (!OpenRecordSet(m_pRecordset, strSQL))
{
AfxMessageBox(_T("没有成功打开数据表"));
return ;
}
try
{
m_pRecordset->AddNew();
m_pRecordset->PutCollect("Name", _variant_t(m_strInsert));
}
catch(_com_error e)
{
CString strError;
strError.Format(_T("警告:插入信息时发生异常。错误信息。%s"), e.ErrorMessage());
AfxMessageBox(strError);
}
m_pRecordset->Close();
m_pRecordset = NULL;
AfxMessageBox(_T("插入成功!"));
}
此处Open抛异常
// 从数据库中打开表
recPtr->Open(strSQL.AllocSysString(),
pApp->m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
请大家给予帮助,谢谢
还有一个问题,我最近刚学数据库,怎么在MSDN中没有发现_RecordsetPtr, _CommandPtr, _ConnetionPtr阿
如何查找它们阿