解决方案 »
- VC对话框程序,利用Microsoft Web ActiveX 控件中的Navigate2加载本地html页面,为什么程序假死呢?分不多,望见谅,谢谢
- WINSDK的视口 窗口问题
- CPP源文件中代码太多,请问有没有办法将其放在其他的文件中,在这个文件中只是调用,谢谢。
- 大家散分到底为了什么啊,分多了是不是怕造成数据溢出呢?
- 代理服务器问题
- 高分请教一关于目录和文件操作的问题?
- VC做的安装程序里该包括哪些动态库呢?
- 极菜的问题:)
- 谁可以给个能下载的vs.net 我给高分
- 请问谁有uuencode的代码?快救我呀!!!!!!!
- VC中已经知道一个对话框资源,怎么知道他的相关类是哪个?
- 如何在listctrl中嵌入button
类同的代码,测试完全没有问题
int l=13;
Rs->MoveFirst();
Rs->Move((long)l);另外,你错误捕捉应该是错误的写法,*e要改成&e ,写成指针e应该捕捉不到错误
用& 的话系统有红色波浪线
再请教下,像代码这种 ADO 操作 access如何删除或更新某条数据,如 sql = "delete from table where name = 'alice' ";这该如何执行呢?谢谢谢谢~~本人菜鸟,希望能赐教!
.....
_Variant_t v;
cnn.Execute(sql,&v,-1);
cnn.Execute(_bstr_t(sql),&v,-1);
大侠,这样虽然不报错了,但是 数据删不掉void CaccessTestDlg::OnBnClickedDelete()
{
_variant_t v;
theApp.m_pConnection->Execute(_bstr_t("delete from DemoTable where username = 'alice' "),&v,-1);
// TODO: 在此添加控件通知处理程序代码
}
这样写规范点
有个问题哎,当我删一个不存在的名字时 它竟然不报错,还说删除成功。。网上都是写的 *e。。这个代码我是在别人的基础上改的。。
try
{
UpdateData(true);
if(m_Name == _T(""))
{
AfxMessageBox(_T("请输入要删除的姓名!"));
return;
}
_variant_t v;
CString str = _T("delete DemoTable.* from DemoTable where username = '");
str += m_Name;
str += _T("'"); theApp.m_pConnection->Execute(_bstr_t(str),&v,-1);
AfxMessageBox(_T("删除成功!")); m_Name = _T("");
m_Age = _T("");
UpdateData(false); }
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
有个问题哎,当我删一个不存在的名字时 它竟然不报错,还说删除成功。。网上都是写的 *e。。这个代码我是在别人的基础上改的。。
try
{
UpdateData(true);
if(m_Name == _T(""))
{
AfxMessageBox(_T("请输入要删除的姓名!"));
return;
}
_variant_t v;
CString str = _T("delete DemoTable.* from DemoTable where username = '");
str += m_Name;
str += _T("'"); theApp.m_pConnection->Execute(_bstr_t(str),&v,-1);
AfxMessageBox(_T("删除成功!")); m_Name = _T("");
m_Age = _T("");
UpdateData(false); }
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
查看Execute的返回值v
返回值??
你指的是 _variant_t v; 吧?我看了下,存在的数据删除时,和不存在的数据删除时,对应的 v 值
是不是 关键是那个 I4 的值?? 为 1 就代表 成功? 为0 就代表不成功?网上找的有点乱,所以在此请教一下大家~谢谢!
如果写个判断 可以不可以这样:if(v.I4 == 1)
{
success!
}
else
{
failed!
}
返回执行成功的条数(,v.lvale)
有个问题哎,当我删一个不存在的名字时 它竟然不报错,还说删除成功。。网上都是写的 *e。。这个代码我是在别人的基础上改的。。
try
{
UpdateData(true);
if(m_Name == _T(""))
{
AfxMessageBox(_T("请输入要删除的姓名!"));
return;
}
_variant_t v;
CString str = _T("delete DemoTable.* from DemoTable where username = '");
str += m_Name;
str += _T("'"); theApp.m_pConnection->Execute(_bstr_t(str),&v,-1);
AfxMessageBox(_T("删除成功!")); m_Name = _T("");
m_Age = _T("");
UpdateData(false); }
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}呵呵,错误也能继承,那你*e,有没有捕捉到错误?
是 v.Ival 是返回受影响条数,没有Ivale~ :)谢谢 解决这个问题了另外捕捉错误没起到作用 是*e的问题? 但是写成&e 就有红色波浪线。而且网上都这样写的。帖子再放几天,再等等其他热心网友来解决1楼的问题~~~谢谢各位啦~~
为什么select 时,就算查到数据,Ival 的值还是为0 呢? 我该如何知道 查到了 几条 数据呢?
CString str1 = _T("select * from DemoTable where username = '");
str1 += m_Name;
str1 += _T("'");
theApp.m_pConnection->Execute((_bstr_t)str1,&v,-1);在网上找了别的办法,说用
m_pCommand->CommandText = "select count(*) from DemoTable where username = 'sdd' ";
v = m_pCommand->Execute(NULL,NULL,adCmdText);但是这个命令 我一执行就报错。。囧,所以我还是偏向了 用 connection来excute(用它不报错)
pConn->CursorLocation=adUseClient;
pConn->Open(_bstr_t("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\Data\\Northwind\\NORTHWINDA.MDB;Persist Security Info=False"),_bstr_t(""),_bstr_t(""),-1); _CommandPtr cmdX(__uuidof(Command));
cmdX->PutActiveConnection(_variant_t((IUnknown*)pConn));
cmdX->CommandText=_bstr_t("Employees");
_RecordsetPtr rsX=cmdX->Execute(NULL,NULL,adCmdTable);
int n=rsX->RecordCount;command的使用方法看上述代码;连接的execute使用select时,并不会对数据库产生影响,所以返回v值为0,v的值用于指明对数据库产生作用的记录条数;