try
{
m_pRemRecordset->Open("SELECT * FROM RemindList",// 查询RemindList表中所有字段
theApp.m_pConnection.GetInterfacePtr(),// 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
m_pSetRecordset.CreateInstance(__uuidof(Recordset));
try
{
m_pSetRecordset->Open("SELECT * FROM Set", // 查询Set表中所有字段
theApp.m_pConnection.GetInterfacePtr(),// 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
在执行m_pSetRecordset->Open这条语句就会挂掉?
12 个解决方案
#1
把上一个记录集的数据保存到数组等,然后关闭,打开另一个
#2
新建一个Recordset对象, 不就能打开了
#3
第二次Open()前:
m_pRecordset->CancelUpdate()
m_pRecordset->Close();
m_pRecordset->CancelUpdate()
m_pRecordset->Close();
#4
但是单独打开以下的记录集也会挂,:
m_pSetRecordset.CreateInstance(__uuidof(Recordset));
try
{
m_pSetRecordset->Open("SELECT * FROM Set", // 查询Set表中所有字段
theApp.m_pConnection.GetInterfacePtr(),// 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
如果单独执行上一个记录集则没事,这是什么原因呢,表名称也没错啊
m_pSetRecordset.CreateInstance(__uuidof(Recordset));
try
{
m_pSetRecordset->Open("SELECT * FROM Set", // 查询Set表中所有字段
theApp.m_pConnection.GetInterfacePtr(),// 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
如果单独执行上一个记录集则没事,这是什么原因呢,表名称也没错啊
#5
可以的,用两个Recordset
#6
还有我如果删除指定记录的话,怎么写:
m_pSetRecordset->Open("SELECT * FROM Set where Id=1", // 查询Set表中所有字段
theApp.m_pConnection.GetInterfacePtr(),// 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
是这样吗:
m_pRecordset->Delete(adAffectCurrent);
m_pRecordset->Update();
如果要删除多条的话,是不是就用循环每次去打开,删除,关闭
或者有什么其他的方法吗?
m_pSetRecordset->Open("SELECT * FROM Set where Id=1", // 查询Set表中所有字段
theApp.m_pConnection.GetInterfacePtr(),// 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
是这样吗:
m_pRecordset->Delete(adAffectCurrent);
m_pRecordset->Update();
如果要删除多条的话,是不是就用循环每次去打开,删除,关闭
或者有什么其他的方法吗?
#7
实际上,网上有很多现成的数据库操作类,可以直接使用,觉得不合适就在其基础上修改,易懂也简单得多。
参见:
http://www.vckbase.com/document/viewdoc/?id=668
参见:
http://www.vckbase.com/document/viewdoc/?id=668
#8
捕捉异常_com_error e
看e.Description()描述
删除多条记录可以只有执行sql语句delete from table where ??
看e.Description()描述
删除多条记录可以只有执行sql语句delete from table where ??
#9
捕捉不到异常的时候就挂掉了,
就在Open那条语句挂掉了,还没到异常
那个sql语句是用什么函数来执行,也是用Open吗
就在Open那条语句挂掉了,还没到异常
那个sql语句是用什么函数来执行,也是用Open吗
#10
是你的表不存在吧,两个_RecordSetPtr是可以的,
“delete from table where”是_ConnectPtr指针用Excute执行的!!
“delete from table where”是_ConnectPtr指针用Excute执行的!!
#11
就算同时打开50个表,都不关闭,也不会有问题的。
数据库一般最好打开一次,表就无所谓,
捕捉异常的代码有问题,一定会得到表述的。
数据库一般最好打开一次,表就无所谓,
捕捉异常的代码有问题,一定会得到表述的。
#12
不好意思,出丑出大了,
SELECT * FROM Set
Set是sql语句关键字,我竟然用它做表名,
仍然谢谢各位的帮忙,还是学到不少
SELECT * FROM Set
Set是sql语句关键字,我竟然用它做表名,
仍然谢谢各位的帮忙,还是学到不少
#1
把上一个记录集的数据保存到数组等,然后关闭,打开另一个
#2
新建一个Recordset对象, 不就能打开了
#3
第二次Open()前:
m_pRecordset->CancelUpdate()
m_pRecordset->Close();
m_pRecordset->CancelUpdate()
m_pRecordset->Close();
#4
但是单独打开以下的记录集也会挂,:
m_pSetRecordset.CreateInstance(__uuidof(Recordset));
try
{
m_pSetRecordset->Open("SELECT * FROM Set", // 查询Set表中所有字段
theApp.m_pConnection.GetInterfacePtr(),// 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
如果单独执行上一个记录集则没事,这是什么原因呢,表名称也没错啊
m_pSetRecordset.CreateInstance(__uuidof(Recordset));
try
{
m_pSetRecordset->Open("SELECT * FROM Set", // 查询Set表中所有字段
theApp.m_pConnection.GetInterfacePtr(),// 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
如果单独执行上一个记录集则没事,这是什么原因呢,表名称也没错啊
#5
可以的,用两个Recordset
#6
还有我如果删除指定记录的话,怎么写:
m_pSetRecordset->Open("SELECT * FROM Set where Id=1", // 查询Set表中所有字段
theApp.m_pConnection.GetInterfacePtr(),// 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
是这样吗:
m_pRecordset->Delete(adAffectCurrent);
m_pRecordset->Update();
如果要删除多条的话,是不是就用循环每次去打开,删除,关闭
或者有什么其他的方法吗?
m_pSetRecordset->Open("SELECT * FROM Set where Id=1", // 查询Set表中所有字段
theApp.m_pConnection.GetInterfacePtr(),// 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
是这样吗:
m_pRecordset->Delete(adAffectCurrent);
m_pRecordset->Update();
如果要删除多条的话,是不是就用循环每次去打开,删除,关闭
或者有什么其他的方法吗?
#7
实际上,网上有很多现成的数据库操作类,可以直接使用,觉得不合适就在其基础上修改,易懂也简单得多。
参见:
http://www.vckbase.com/document/viewdoc/?id=668
参见:
http://www.vckbase.com/document/viewdoc/?id=668
#8
捕捉异常_com_error e
看e.Description()描述
删除多条记录可以只有执行sql语句delete from table where ??
看e.Description()描述
删除多条记录可以只有执行sql语句delete from table where ??
#9
捕捉不到异常的时候就挂掉了,
就在Open那条语句挂掉了,还没到异常
那个sql语句是用什么函数来执行,也是用Open吗
就在Open那条语句挂掉了,还没到异常
那个sql语句是用什么函数来执行,也是用Open吗
#10
是你的表不存在吧,两个_RecordSetPtr是可以的,
“delete from table where”是_ConnectPtr指针用Excute执行的!!
“delete from table where”是_ConnectPtr指针用Excute执行的!!
#11
就算同时打开50个表,都不关闭,也不会有问题的。
数据库一般最好打开一次,表就无所谓,
捕捉异常的代码有问题,一定会得到表述的。
数据库一般最好打开一次,表就无所谓,
捕捉异常的代码有问题,一定会得到表述的。
#12
不好意思,出丑出大了,
SELECT * FROM Set
Set是sql语句关键字,我竟然用它做表名,
仍然谢谢各位的帮忙,还是学到不少
SELECT * FROM Set
Set是sql语句关键字,我竟然用它做表名,
仍然谢谢各位的帮忙,还是学到不少