代码如下,程序运行的时候就出现消息框“删除记录出错!”,数据库里的记录也没有被删除,问题出在哪里啊?
void CTreeDataDlg::DeleteRecord(HTREEITEM hItem)
{ _RecordsetPtr m_pRecordset;
CString strSQL; TVITEM item;
TCHAR szText[1024];
item.hItem=hItem;
item.mask=TVIF_TEXT|TVIF_HANDLE;
item.pszText=szText;
item.cchTextMax=1024; m_ctrlTree.GetItem(&item); strSQL="DELETE * FROM treeitem where name=item.pszText "; try
{
HRESULT hRes;
hRes = m_pRecordset.CreateInstance(_T("ADODB.Recordset"));
hRes = m_pRecordset->Open((LPTSTR)strSQL.GetBuffer(130),
_variant_t((IDispatch *)(((CTreeDataApp*)AfxGetApp())->m_pTreeConn),true),
adOpenDynamic,adLockPessimistic,adCmdText);
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
MessageBox("删除记录出错!");
}
}
void CTreeDataDlg::DeleteRecord(HTREEITEM hItem)
{ _RecordsetPtr m_pRecordset;
CString strSQL; TVITEM item;
TCHAR szText[1024];
item.hItem=hItem;
item.mask=TVIF_TEXT|TVIF_HANDLE;
item.pszText=szText;
item.cchTextMax=1024; m_ctrlTree.GetItem(&item); strSQL="DELETE * FROM treeitem where name=item.pszText "; try
{
HRESULT hRes;
hRes = m_pRecordset.CreateInstance(_T("ADODB.Recordset"));
hRes = m_pRecordset->Open((LPTSTR)strSQL.GetBuffer(130),
_variant_t((IDispatch *)(((CTreeDataApp*)AfxGetApp())->m_pTreeConn),true),
adOpenDynamic,adLockPessimistic,adCmdText);
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
MessageBox("删除记录出错!");
}
}
解决方案 »
- 可否问大家一个问题,Proe所绘成的3D模型,能否用在VS2010中?
- CDatabase 的ExecuteSQL 必须与 try catch一起用吗
- 多次CreateCompatibleBitmap后,返回异常,错误代码为8
- 在DLL中CreateFile,打开"\\\\.\\C:",访问拒绝
- 如何弹出一个显示倒计时的对话框
- vc里面用CFile是不是不能一下读一行?
- 求教:如何使Combobox能够识别自己输入的字符串?
- 怎样获得右键弹出式菜单?
- 在WIN32里int 类型占4个字节,那么他表示的范围是多少?
- 短连接所引申的想法。求教~~
- 我build execute后为什么出现msvcrt.dll错误?
- DLL中的常量导出
应该是那个SQL 语句错了吧, strSQL="DELETE * FROM treeitem where name=item.pszText ";
其中item.psaText要加双引号什么的吧?正确的应该怎么写?
编译错误:error C2110: cannot add two pointers还有下载的源码里有这样的句子,运行正确:
strSQL="SELECT * FROM treeitem where rootname like '%" ;
strSQL=strSQL+strFieldValue+"%'";上面两个句子的单引号和双引号是怎么用的?