2015-05-23 3 views
1

У меня есть приложение на C++, которое должно реагировать на изменения статуса, хранящиеся в базе данных SQL. Они должны реагировать в режиме реального времени, и в настоящее время это делается путем опроса. Однако время отклика в реальном времени, которое мне нужно, - это перегрузка базы данных.SQL Server 2014 Уведомления о запросах в C++ с библиотеками ADO.NET

Я читал о уведомлениях о запросах, представленных в SQL Server 2005, но по правде говоря, я действительно не понимаю разные методы подключения SQL. В настоящее время я использую ADO.NET для упрощения связи с базой данных, но единственный пример кода, который я нашел для выполнения запросов Уведомления такого рода, находится в C# и VB. Не говоря уже о том, что я пытаюсь понять концепцию. Вот пример того, как я сейчас запускаю SQL с ADO.NET.

hr = link.CreateInstance(__uuidof(Connection)); 

     if (link) { // Execute the query on the open connection using existing command object 

     pCommand.CreateInstance(__uuidof(Command)); 
     pCommand->ActiveConnection = link; 
     pCommand->CommandType = ado20CommandType; 
     pCommand->CommandText = strQuery.GetBuffer(0); 
     pCommand->PutPrepared(true); 
     pCommand->NamedParameters = true; 

      if (pRecordSet = pCommand->Execute(&vRecordsAffected,NULL,NULL)) { // Execute the final query and set object-level recordset object 
      lRecordsAffected = vRecordsAffected.lVal; 

      _RecordsetPtr pfuRecordSet = link->Execute(_T("SELECT @@IDENTITY as pmIDENT;"),NULL,adCmdText); 
      CString strID = pfuRecordSet->GetFields()->GetItem(COleVariant("pmIDENT"))->Value.bstrVal; 
      int nID = atoi(strID); 
      if (nID > 0) { 
       nLastInsertedID = nID; 
      } 

      return true; 
     } 

мне было интересно, если кто-то может дать мне ресурсы и/или образцы кода, которые помогли бы мне установить это в C++? Заранее спасибо.

+0

Вопросы, запрашивающие ресурсы в Интернете, не соответствуют теме. Вы должны спросить о какой-то конкретной проблеме, которая у вас есть. Потенциальным решением было бы создать проект C# и вызвать его из C++. – usr

ответ

0

Самый быстрый способ получить данные из базы данных SQL Server - использовать SqlDataReader, который доступен только для чтения, только для чтения.

Посмотрите на этот код на C++ и попробуйте. http://tinyurl.com/m6u9jh7

+0

Удивительное спасибо, да, посмотрим, где я немного неясен. Поэтому мне пришлось бы реализовать sqldatareader вместе с кодом ado.net, когда я хочу делать запросы на запись, которые я предполагаю ... Это довольно просто. Но может ли sqldatareader поддерживать уведомления о запросах или делать это, это просто альтернативный метод чтения с ado.net, который быстрее? Мое исследование предложило бы ... – Raiden616

+0

Да, вы можете использовать SqlDataReader с SqlDependency (решение C#) https://msdn.microsoft.com/en-us/library/9dz445ks(v=vs.110).aspx –

+0

AddCacheDependency (Решение C#) https://msdn.microsoft.com/en-us/library/9dz445ks(v=vs.110).aspx –