没有什么好的办法。
用updatebatch
用存储过程。
cachesize在读取记录集的时候好用,不知道在插入纪录时管不管用,你试试吧。
用updatebatch
用存储过程。
cachesize在读取记录集的时候好用,不知道在插入纪录时管不管用,你试试吧。
解决方案 »
- 请教一个移动平均计算的问题
- 如果将新建的表字段自动导入到指定的另外一个表呢?
- 请问现在是直接学2005还是2008好?
- where E_ID=null和where E_ID=is null的区别
- mssql里表A,B里面分别存储了rdate,area,phonenum,表A存储订购,表B存储退订信息。
- [MSSQL2005]用程序可以连接到系统数据库,自建的数据库却连接不上?这是什么原因?
- 请问关系图起什么作用? 表与表之间在什么情况下有必须建关系图?
- 如何更新数据库图片字段
- 为什么在连接SQL时用计算机名可以建立连接,但是用IP就是不可以呢?
- 关于数据库里存放文件内容的问题。
- 这句存储过程语句出错,Update @TableName_wzdjb Set ZF=@FzValue Where PZHM=@InputPzhm
- 存储过程出现莫名其妙的错误
一般情况下需要多少秒啊,我的需要80秒,难以忍受
我是用一个操作ado的类来插入数据的,一条一条记录的插入
而以前我是用文件操作,速度非常快,几秒钟搞定
难道改用数据库就这么慢?
郁闷
高手帮忙出注意,分不够再加
你可以先插到Recordset中然后用UpdateBatch这样应该快!!
下面是部分代码,大家看看问题在哪里
/*****************************************************************
** 函数名: WriteAccidentRecord
** 功能描述: 写事故记录
** 变量说明: strKey 汽车钥匙号,pRecord 记录数组指针,iNum写入的记录条数
** 返回值:
** 作 者: far
** 日 期: 2002.5.26 21:35
****************************************************************/
BOOL CManageDb::WriteAccidentRecord(CString strKey, SRECORD* pRecord,int iNum)
{
//打开运行记录表
if(!m_pRs.Open(m_Ado.GetActiveConnection(), "事故记录表", CADORecordset::openTable))
{
return 0;
}
//添加记录
for(int i = 0; i<iNum; i++)
{
COleDateTime time(pRecord[i].cTime.GetYear(), pRecord[i].cTime.GetMonth(), pRecord[i].cTime.GetDay(),
pRecord[i].cTime.GetHour(), pRecord[i].cTime.GetMinute(), pRecord[i].cTime.GetSecond()); m_pRs.AddNew ();
m_pRs.SetFieldValue ( "KEY", strKey);
m_pRs.SetFieldValue ( "速度", pRecord[i].iSpeed);
m_pRs.SetFieldValue ( "运行状态", pRecord[i].bStop);
m_pRs.SetFieldValue ( "控制状态", atoi((char*)pRecord[i].chSwitch));
m_pRs.SetFieldValue("时间", time);
m_pRs.SetFieldValue("压缩项", pRecord[i].iCompress );
}
m_pRs.Update ();
m_pRs.Close ();
return TRUE;}