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);
应该是缓冲区溢出了.
请教各位,急用
是关于一个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);
应该是缓冲区溢出了.