这样做可以吗?

rogers008 2003-06-11 11:49:24
我用MFC的ODBC编写数据库应用程序,访问本机的SQL server2000,周期性的往数据库中写数据(每次约1000多条记录)过程如下,先生成一个CRecordset类,与数据源连接,选中要操作的表,在程序中实现如下:
myset.Open();
myset.m_pDatabase->beginTrans();
for(;;)//1000多次循环,写1000多次记录
{
myset.Addnew();
.....
myset.Update();
}
myset.m_pDatabase->CommitTrans();
myset.Close();
刚开始是按上述编写,即每次操作都要打开记录集,操作完成后关闭,后来改成在初始化时打开记录集,以后每次操作前用requery()来建立记录集,在程序退出时才用close()关闭。
请问这样做有问题吗?
另外我的程序在运行一段时间后会出现“超时已过期”的消息,然后停止运行,怎么回事?怎样解决?
...全文
33 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ffit 2003-06-11
  • 打赏
  • 举报
回复
数据库表里的记录达到一定数目时,就会超时.
可以用CDatabase的SetQueryTime()将超时时间改长点.
添加数据不必去打开表,你可以如下作:
CDatabase m_db;
CString sql;
m_db.Open(...);
m_db.BeginTrans();
for(....)
{
sql="insert into table values(...)";
m_db.ExecuteSQL(sql);
}
m_db.CommitTrans();
m_db.Close();
rogers008 2003-06-11
  • 打赏
  • 举报
回复
顺便说一下,在MFC中好像不能直接用向导生成CDatabase类,我每次用时都是用CRecordset类的m_pDatabase.连接用默认连接。这样做连接数据源似乎很不灵活,比如如果想通过一个对话框来更改数据源,好像不行。是不是要用ODBC API来做,但又觉得太麻烦,有更好的办法吗?
commandos 2003-06-11
  • 打赏
  • 举报
回复
up
2324 2003-06-11
  • 打赏
  • 举报
回复
能不能介绍一些vc 的odbc常识?
如:open () close()之类意思,帮助出学者,有没有资料(电子书也行),看到你们懂这么多,好羡慕呀

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧