C++ Oracle SQL删除位于数组/CArray/DataStructure中的值

C++ Oracle SQL删除位于数组/CArray/DataStructure中的值,c++,sql,oracle,mfc,C++,Sql,Oracle,Mfc,我有带ID的CArray/CMap。 SQL表上有:ID、值、开始时间、结束时间。 我收到StartTime和EndTime,需要删除该CArray上显示的所有ID。 因此需要进行如下查询: “从表中删除id(列表[0]、列表[1]、列表[2]……列表[n])以及T1和T2之间的时间” 我的问题是如何实现“in(…)”如何传输CArray上的ID 将CDATA base.executeSQL(查询)与CommitTrans和CommitTrans一起使用 谢谢您可以这么做(前提是您有CArray

我有带ID的CArray/CMap。
SQL表上有:ID、值、开始时间、结束时间。
我收到StartTime和EndTime,需要删除该CArray上显示的所有ID。
因此需要进行如下查询:
“从表中删除id(列表[0]、列表[1]、列表[2]……列表[n])以及T1和T2之间的时间”
我的问题是如何实现“in(…)”如何传输CArray上的ID

将CDATA base.executeSQL(查询)与CommitTrans和CommitTrans一起使用


谢谢

您可以这么做(前提是您有CArray,它被称为:

CString sql,item;
sql=_T(“从id所在的表中删除”);
if(andry.GetCount()==1)
{
item.Format(_T(=%d)),和[0]);
sql+=项目;
}
其他的
{
for(int i=0;i

对于CMap,将For(i=0;…)替换为pos=mapId.GetStartPosition()等位置。

您可以做的简单操作如下(前提是您有CArray,它被称为:

CString sql,item;
sql=_T(“从id所在的表中删除”);
if(andry.GetCount()==1)
{
item.Format(_T(=%d)),和[0]);
sql+=项目;
}
其他的
{
for(int i=0;i

对于CMap,将For(i=0;…)替换为pos=mapId.GetStartPosition()等位置。

尝试将CArray设置为CString x,x1,x2,并在barrack内输入该CString尝试将CArray设置为CString x,x1,x2,并在barracksHi内输入该CString,在in(…)内输入的ID数量是否有限制?如果我有一百万个ID,我应该分割成块并进行几个查询吗?我不认为ID有限制,但是整个SQL查询长度有限制。说到这里,请注意,这都是特定于数据库的。嗨,我可以在in(…)中放入的ID数量有限制吗?如果我有一百万个ID,我应该分割成块并进行几个查询吗?我不认为ID有限制,但是整个SQL查询长度有限制。说到这里,请注意,这都是特定于数据库的。
CString sql, item;
sql = _T("delete from table where id ");
if(arId.GetCount() == 1)
{
  item.Format(_T(" = %d"), arId[0]);
  sql += item;
}
else
{
  for(int i = 0; i < arId.GetCount(); ++i)
  {
    if(i == 0) sql += _T("IN (");
    item.Format(_T("%d"), arId[0]);
    if(i == arId.GetCount()-1)
      item += _T(")");
    else
      item += _T(", ");
    sql += item;
  }
}
CDatabase.executeSQL(sql);