SQL语句执行时内存不足的有关问题

SQL语句执行时内存不足的问题
请教各位,急用
是关于一个listbox的操作,要访问数据库
我的程序中有个函数如下:
说明:m-user和m-friend是两个listbox
在这个函数执行前,先调用另一个函数,向m-user中插入数据库的搜索结果。
这个函数是向m-friend中插入搜索结果。
void   CMiniMSNServerDlg::OnSelchangeListUsers()  
{
//   TODO:   Add   your   control   notification   handler   code   here
_ConnectionPtr   pConn;
_RecordsetPtr   pReset;

CString   sql;
char   cursel[8];
m_user.GetText(m_user.GetCurSel(),   cursel);
***** sql.Format( "select   FriendID   from   Friends   where   ID   =   %s ",   cursel);

_variant_t   TheValue;
INT   id;
char   buf[8];
INT   nIndex   =   0;

while(m_friend.GetCount())
m_friend.DeleteString(0);
m_friend.ResetContent();

try
{
pConn.CreateInstance(__uuidof(Connection));
pReset.CreateInstance(__uuidof(Recordset));

pConn-> Open( "Provider   =   SQLOLEDB.1;   Initial   Catalog   =   MiniMSN;   Data   Source   =   MILAN ",
"sa ",   "198452 ",   -1);
pReset-> Open(_bstr_t(sql),   (IDispatch*)pConn,   adOpenDynamic,  
adLockOptimistic,   adCmdText);

//插入搜索结果
while(!pReset-> adoEOF)
{
TheValue   =   pReset-> Fields-> GetItem( "ID ")-> Value;
if(TheValue.vt   !=   VT_NULL)
{
id   =   TheValue.intVal;
        sprintf(buf,   "%d ",   id);
        m_friend.InsertString(nIndex++,   buf);
}
pReset-> MoveNext();
}
pReset-> Close();
pConn-> Close();
}
catch(_com_error&   ex)
{
AfxMessageBox((char*)ex.Description());
return;
}

}
我单步跟踪
运行到我加了很多*的那一句
sql.Format( "select   FriendID   from   Friends   where   ID   =   %s ",   cursel);
的时候,就出现内存不足的问题,弹出一个窗口说内存不足
请问是怎么回事,如何解决

------解决方案--------------------
把sql的定义语句该为
CString sql= " ";
------解决方案--------------------
m_user.GetText(m_user.GetCurSel(), cursel);
应该是缓冲区溢出了.