C++ Oracle SQL删除位于数组/CArray/DataStructure中的值
我有带ID的CArray/CMap。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
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);