Вставьте или обновите SQL Server, если данные не существуют с использованием ADO C ++ - PullRequest
0 голосов
/ 28 марта 2019

Я новичок в ADO.Я использую ADO в своем проекте C ++ для подключения к SQL Server. Я использую оператор if, чтобы увидеть, существуют ли данные в базе данных, но он просто получает текущие данные не все (например, набор строк), так что это не помогает мне. Я хочуСоберите всю строку в переменной и проверьте (что-то вроде DataRowCollection.Contains метода в C #), но я не могу найти это для ADO в C ++.Не могли бы вы дать мне несколько советов, как я могу собрать все данные из базы данных, используя C ++ ADO (если ado имеет DataRowCollection), а затем проверить, или что будет лучшим решением?PS Я не хочу использовать DataRowCollection в C ++, потому что он требует using namespace system::Data; и такой вид пространства имен, а затем system :: data требует преобразования моего проекта /clr (common language runtime support).заранее спасибо

_RecordsetPtr pRecordset;

hr = pCommand.CreateInstance(__uuidof(Command));
_bstr_t InsertQuery(L"Insert into TestTB(AccountID, Name, Balance) Values(" + (_bstr_t)a[i].login + "," + (_bstr_t)a[i].name + "," + (_bstr_t)a[i].balance + ")");

pCommand->ActiveConnection = pConnection;
pCommand->CommandText = InsertQuery;
pCommand->CommandType = adCmdText;

valFieldNam = pRecordset->Fields->GetItem("Name")->Value;
valFieldAcc = pRecordset->Fields->GetItem("AccountID")->Value.intVal;
valFieldBal = pRecordset->Fields->GetItem("Balance")->Value.dblVal;

pRecordset->MoveFirst();
while (!pRecordset->EndOfFile)
{
    if (valFieldAcc == a[i].login)
    {
        //update
    }
    else
    {
        pConnection->Execute(InsertQuery, NULL, adExecuteRecord);
    }
pRecordset->MoveNext();
}
...