用的是VC+SQLServer2000,表里边一条符合条件的记录也没有时也会出现100%
就是下边这段代码:
_ConnectionPtr m_pConn;
_RecordsetPtr m_pSetg;
m_pConn.CreateInstance(__uuidof(Connection));
m_pSetg.CreateInstance(__uuidof(Recordset));
m_pConn->Open("Provider=SQLOLEDB;Data Source=CHINAVAS;Initial Catalog=TelQQMY; User ID=sa;Password=;","","",NULL); CString strSqlg;
strSqlg.Format("select * from voicemail where delstatus = 1 and outstatus = 0 order by lsh asc");
BSTR strSQLg=strSqlg.AllocSysString();
m_pSetg->Open(strSQLg,(IDispatch*)m_pConn,adOpenDynamic,adLockOptimistic,adCmdText);
strSqlg.Empty();
if( m_pSetg->adoEOF && m_pSetg->BOF )//发送用户点歌和用户语音短信!
{
if( m_pSetg->State )
{
m_pSetg->Close();
}
if( m_pConn->State )
{
m_pConn->Close();
}
delete [] send;
delete [] tmpno;
return;
}
else
{
m_pSetg->MoveFirst();
} for( SendTrunk; SendTrunk < MAXSENDTRUNK; SendTrunk++ )
{
if( ! m_pSetg->adoEOF)
{
if( (TRK_FREE == Trunk[SendTrunk].State)&&( ISUP_CH_FREE == DJISUP_GetChnState( SendTrunk/30, SendTrunk%30)) )
{
tmp = m_pSetg->GetCollect(_variant_t( "sendto" ));
tmplsh = m_pSetg->GetCollect(_variant_t( "lsh" ));
lsht = tmplsh.lVal;
strcpy(send,(char*)(_bstr_t)tmp);
len = strlen(send); if( len < 8 )
{
if( yzGetTelByQQ( atoi(send),tmpno ) )
{
strcpy(Trunk[SendTrunk].callerno,tmpno);
strcpy(Trunk[SendTrunk].callee,(char*)(_bstr_t)m_pSetg->GetCollect(_variant_t("caller")));
strcpy(Trunk[SendTrunk].filename,(char*)(_bstr_t)m_pSetg->GetCollect(_variant_t("vm_dir")));
Trunk[SendTrunk].lsh = lsht;
temp = Trunk[SendTrunk].callee;
if( temp.Find('F') > 0 )
{
temp.Delete( 0, 12 );
strcpy( Trunk[SendTrunk].callee , temp.GetBuffer(0) );
temp.Empty();
Trunk[SendTrunk].voice_type = 2;
}
else
{
Trunk[SendTrunk].voice_type = 1;
}
Trunk[SendTrunk].State = TRK_MESSAGE_SENDING_CALLOUT;
yzSendMessageProcess( lsht);
m_pSetg->MoveNext();
}
else
{
// strcpy( tmpno, (char*)(_bstr_t)m_pSetg->GetCollect(_variant_t( "vm_dir" )));
yzSendMessageFailed(lsht);
m_pSetg->MoveNext();
}
}
else if( (len >= 8)&&(len <= 12))
{
strcpy(Trunk[SendTrunk].callerno,send);
strcpy(Trunk[SendTrunk].callee,(char*)(_bstr_t)m_pSetg->GetCollect(_variant_t("caller")));
strcpy(Trunk[SendTrunk].filename,(char*)(_bstr_t)m_pSetg->GetCollect(_variant_t("vm_dir")));
temp = Trunk[SendTrunk].callee;
if( temp.Find('F') > 0 )
{
temp.Delete( 0, 12 );
strcpy( Trunk[SendTrunk].callee , temp.GetBuffer(0) );
temp.Empty();
Trunk[SendTrunk].voice_type = 2;
}
else
{
Trunk[SendTrunk].voice_type = 1;
}
yzSendMessageProcess( lsht);
m_pSetg->MoveNext();
}
else
{
yzSendMessageFailed(lsht);
m_pSetg->MoveNext();
} } }
else
{
break; }
}
delete [] send;
delete [] tmpno;
return;
就是下边这段代码:
_ConnectionPtr m_pConn;
_RecordsetPtr m_pSetg;
m_pConn.CreateInstance(__uuidof(Connection));
m_pSetg.CreateInstance(__uuidof(Recordset));
m_pConn->Open("Provider=SQLOLEDB;Data Source=CHINAVAS;Initial Catalog=TelQQMY; User ID=sa;Password=;","","",NULL); CString strSqlg;
strSqlg.Format("select * from voicemail where delstatus = 1 and outstatus = 0 order by lsh asc");
BSTR strSQLg=strSqlg.AllocSysString();
m_pSetg->Open(strSQLg,(IDispatch*)m_pConn,adOpenDynamic,adLockOptimistic,adCmdText);
strSqlg.Empty();
if( m_pSetg->adoEOF && m_pSetg->BOF )//发送用户点歌和用户语音短信!
{
if( m_pSetg->State )
{
m_pSetg->Close();
}
if( m_pConn->State )
{
m_pConn->Close();
}
delete [] send;
delete [] tmpno;
return;
}
else
{
m_pSetg->MoveFirst();
} for( SendTrunk; SendTrunk < MAXSENDTRUNK; SendTrunk++ )
{
if( ! m_pSetg->adoEOF)
{
if( (TRK_FREE == Trunk[SendTrunk].State)&&( ISUP_CH_FREE == DJISUP_GetChnState( SendTrunk/30, SendTrunk%30)) )
{
tmp = m_pSetg->GetCollect(_variant_t( "sendto" ));
tmplsh = m_pSetg->GetCollect(_variant_t( "lsh" ));
lsht = tmplsh.lVal;
strcpy(send,(char*)(_bstr_t)tmp);
len = strlen(send); if( len < 8 )
{
if( yzGetTelByQQ( atoi(send),tmpno ) )
{
strcpy(Trunk[SendTrunk].callerno,tmpno);
strcpy(Trunk[SendTrunk].callee,(char*)(_bstr_t)m_pSetg->GetCollect(_variant_t("caller")));
strcpy(Trunk[SendTrunk].filename,(char*)(_bstr_t)m_pSetg->GetCollect(_variant_t("vm_dir")));
Trunk[SendTrunk].lsh = lsht;
temp = Trunk[SendTrunk].callee;
if( temp.Find('F') > 0 )
{
temp.Delete( 0, 12 );
strcpy( Trunk[SendTrunk].callee , temp.GetBuffer(0) );
temp.Empty();
Trunk[SendTrunk].voice_type = 2;
}
else
{
Trunk[SendTrunk].voice_type = 1;
}
Trunk[SendTrunk].State = TRK_MESSAGE_SENDING_CALLOUT;
yzSendMessageProcess( lsht);
m_pSetg->MoveNext();
}
else
{
// strcpy( tmpno, (char*)(_bstr_t)m_pSetg->GetCollect(_variant_t( "vm_dir" )));
yzSendMessageFailed(lsht);
m_pSetg->MoveNext();
}
}
else if( (len >= 8)&&(len <= 12))
{
strcpy(Trunk[SendTrunk].callerno,send);
strcpy(Trunk[SendTrunk].callee,(char*)(_bstr_t)m_pSetg->GetCollect(_variant_t("caller")));
strcpy(Trunk[SendTrunk].filename,(char*)(_bstr_t)m_pSetg->GetCollect(_variant_t("vm_dir")));
temp = Trunk[SendTrunk].callee;
if( temp.Find('F') > 0 )
{
temp.Delete( 0, 12 );
strcpy( Trunk[SendTrunk].callee , temp.GetBuffer(0) );
temp.Empty();
Trunk[SendTrunk].voice_type = 2;
}
else
{
Trunk[SendTrunk].voice_type = 1;
}
yzSendMessageProcess( lsht);
m_pSetg->MoveNext();
}
else
{
yzSendMessageFailed(lsht);
m_pSetg->MoveNext();
} } }
else
{
break; }
}
delete [] send;
delete [] tmpno;
return;
解决方案 »
- 大家说说下面哪种设计模式好?关于类和类的关系,我的主管和副主管争论的不可开交,求大家深度剖析下,下面很清楚的描述了机制,谢谢
- 请教各位大虾一个菜鸟问题^_^
- 程序跳过,不执行下面的代码。但是代码里面没有continue,break语句
- VC菜鸟问一下关于将数据库内容赋给数组
- 对话框
- DrawText 疑问?LPCTSTR 参数?
- 暂停功能做?
- 在vc中调用vb的dll请教(看过以前别人发的,和我的问题不太一样)
- 这里就没有高手吗?!还是我问的问题太难了!!!怎么我问的问题就从没人回答过!!!!
- CSDN,163.com,163.net等网站的登陆页面都包含了ActiveX控件,这些控件就安全吗??
- CRichEditCtrl头疼的问题 --- 行间距不能设为0?
- 在WINDOWS 局域网内如何访问没有共享的打印机以及控制打印机?
if( m_pSetg->adoEOF || m_pSetg->BOF )//发送用户点歌和用户语音短信!
1. 表记录数较多,而且没有索引,速度肯定受影响,如果这个表不会非常频繁的插入删除的话,建议加一个索引。(即使频繁插入,在10万条记录情况下更新索引耗费的时间我觉得应该可以承受,你可以试验一下)2. 表如果操作频繁,是否进行重新组织操作,我sqlserver不太熟,不知如何操作,类似于windows下的磁盘碎片整理。3. 筛选条件,看你的筛选结果与与总记录数,对比一下,如果10万条筛选万还剩7万条的话,那么即使加了索引也不会使用索引了,此时可以适当调整数据库设计,对你这条语句,可以干脆不加条件,取出来后用程序删除。