Лишний селект пи работе функции?
От: LowCoder  
Дата: 23.12.10 07:26
Оценка:
Подскажите плз такой вопрос, есть у меня программа (на Ц++ но не важно) которая работает с БД (через ADO). И такая ситуация — программа должна проапдейтить запись в таблице но если записи там нет то вставить новую запись. Сейчас мне приходится делать селект и если мол число записей одын то апдейтить запись а если ноль то добавлять новую.
Т.е. сейчас мой код выглядит примерно так



bool foo ( param1 ... )
{
    try {
        ...
        SELECT … FROM …
        ...
        long lRCnt = rsCounters->GetRecordCount();
        
        if( lRCnt == -1 || lRCnt > 1 )        
            return false;
        else if( lRCnt == 0 )                
            rsCounters->AddNew();    

        rsCounters->Fields->Item["field1"]->Value = param1;
        ...
        rsCounters->Update();
        rsCounters->Close();
        return true;
    }
    ADO_CATCH2()
    return false;
}



Но есть у меня внутреннее ощущение продиктованное интуицией и опытом что что-то тут не так (прямо таки внутренний протест — вот что хотите делайте но не так тут энергия Ци течет) и можно это сделать как то красивее или проще? Есть ли более правильные решения? Если спрашивать еще точнее — можно ли обойтись без селекта и если да то как?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.