1

ID付きのCArray/CMapがあります。
SQLテーブルには、ID、Value、StartTime、EndTimeがあります。
StartTimeとEndTimeを受け取り、そのCArrayに表示されるすべてのIDを削除する必要があります。
したがって、次のようなクエリが必要です。
「(list [0]、list [1]、list[2]。...list [n])のidとT1とT2の間の時間のテーブルから削除する」
私の問題「in(..)」を実装する方法はCArray上のIDを転送する方法ですか?

CommitTransおよびCommitTransでのCDatabase.executeSQL(QUERY)の使用

ありがとう

4

1 に答える 1

1

あなたができる簡単なことはこれです(あなたがCArrayを持っていて、それがarIdと呼ばれているならば):

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);

CMapの場合、for(i = 0; ...)をPOSITION pos = mapId.GetStartPosition()などに置き換えます。

于 2012-11-29T00:45:34.360 に答える