SQL Server — Poco C ++ с MS SQL с использованием ODBC

Я пытаюсь подключиться к базе данных Microsoft SQL Server с Poco C ++ через ODBC. Я пытался найти примеры, но не сталкивался ни с одним.

Я просто пытаюсь подключиться к своей базе данных с помощью следующего кода

#include <iostream>
#include <string>
#include "Poco/Data/Session.h"
using namespace std;
using namespace Poco::Data;int main()
{
cout << "Testing Poco C++ with MS SQL Server" << endl;
const string CONNECTION_STRING("DRIVER={SQL Server};Server=DESKTOP-32BKOVJ\\SQLEXPRESS;Database=Test2;User ID=sa;Password=IaSS1982;Trusted_Connection=yes;");
Session session("ODBC", CONNECTION_STRING);
return 0;
}

Каждый раз, когда я запускаю этот код, я получаю следующую ошибку утверждения:
Нарушение утверждения: _connectors.end ()! = It [в файле «src \ SessionFactory.cpp», строка 70]

Как создать простое соединение с базой данных MS SQL с помощью Poco C ++ и ODBC, а затем распечатать некоторые записи на консоли?

Я имел в виду статью Poco ODBC и пока цикл SQL пытаясь написать этот код.

Любая помощь будет оценена.
Спасибо

0

Решение

Я могу подключиться к своей базе данных Microsoft SQL Server 2014 с помощью библиотеки Poco C ++. После установки драйверов ODBC, которые являются частью Windows SDK, следующий код должен выполнять все основные операции, такие как
— Создайте
— Читать
— Обновить
— Удалять

#include <iostream>
#include <string>
#include <sstream>
#include "Poco/Data/RecordSet.h"#include "Poco/Data/Session.h"#include "Poco/Data/ODBC/Connector.h"
using namespace std;
using namespace Poco::Data;

bool AddUser(Session& session, const size_t& USER_ID, const string& FIRST_NAME, const string& LAST_NAME);   // [C]reate
void PrintUsers(Session& session);                                                                          // [R]etrieve
bool UpdateLastName(Session& session, const string& FIRST_NAME, const string& NEW_LAST_NAME);               // [U]pdate
bool DeleteUser(Session& session, const size_t& USER_ID);                                                   // [D]elete

int main()
{
try
{
cout << "Testing Poco C++ with MS SQL Server" << endl;
Poco::Data::ODBC::Connector::registerConnector();
const string CONNECTION_STRING("DRIVER={SQL Server};Server=DESKTOP-32BKOVJ\\SQLEXPRESS;Database=Test2;User ID=sa;Password=abc");
//const string CONNECTION_STRING("DSN=PocoMsSQLTest;Uid=sa;Pwd=abc");
Session session("ODBC", CONNECTION_STRING);
if (session.isConnected())
{
PrintUsers(session);
cout << "\n" << endl;

AddUser(session, 5, "Loki", "Moki");
PrintUsers(session);
cout << "\n" << endl;

UpdateLastName(session, "Loki", "Poki");
PrintUsers(session);
cout << "\n" << endl;

DeleteUser(session, 5);
PrintUsers(session);
cout << "\n" << endl;}
else
{
cerr << "Session not able to connect" << endl;
}
}
catch (const exception& e)
{
cerr << "Exception: " << e.what() << endl;
}
////////////////////////////////////////////////////////
Poco::Data::ODBC::Connector::unregisterConnector();
return 0;
}

// Create
bool AddUser(Session& session, const size_t& USER_ID, const string& FIRST_NAME, const string& LAST_NAME)
{
Statement select(session);
stringstream ss;
ss << "INSERT INTO Users (UserID, FirstName, LastName) VALUES (";
ss << USER_ID << ", " << "\'" << FIRST_NAME << "\'" << ", " << "\'" << LAST_NAME << "\')";
const string& SQL = ss.str();
select << SQL;
return select.execute();
}// Retrieve
void PrintUsers(Session& session)
{
Statement select(session);
select << "SELECT * FROM Users";
select.execute();
RecordSet rs(select);
bool more = rs.moveFirst();

if (more)
{
cout << rs.columnName(0) << "\t" << rs.columnName(1) << "\t" << rs.columnName(2) << endl;
}

while (more)
{
cout << rs[0].convert<string>() << "\t" << rs[1].convert<string>() << "\t\t" << rs[2].convert<string>() << endl;
more = rs.moveNext();
}

}

// Update
bool UpdateLastName(Session& session, const string& FIRST_NAME, const string& NEW_LAST_NAME)
{
Statement select(session);
stringstream ss;
ss << "UPDATE Users SET LastName=" << "\'" << NEW_LAST_NAME << "\'" << " WHERE FirstName=" << "\'" << FIRST_NAME << "\'";
const string& SQL = ss.str();
select << SQL;
return select.execute();
}// Delete
bool DeleteUser(Session& session, const size_t& USER_ID)
{
Statement select(session);
stringstream ss;
ss << "DELETE FROM Users WHERE UserID = " << USER_ID;
const string& SQL = ss.str();
select << SQL;
return select.execute();
}

CONNECTION_STRING, который я использую, использует драйверы ODBC напрямую для подключения к базе данных. Если вы хотите использовать DSN для подключения к базе данных, прокомментируйте этот CONNECTION_STRING и раскомментируйте приведенный ниже.

Я провел небольшое исследование о том, что такое DSN и как его создать в Windows 10. Мои выводы приведены ниже.

Что такое DSN?
Увидеть https://en.wikipedia.org/wiki/Data_source_name

Создание имени источника данных ODBC (DSN)
1. Windows 10 ищет ODBC
2. Нажмите «Настроить источники данных ODBC» (32-разрядная версия).
3. На вкладке «Пользователь DSN» нажмите Добавить
Запустится мастер создания нового источника данных.
4. Выберите SQL Server и нажмите Готово
5. В следующем окне
— Дай имя. Это DSN
— дать описание
— Нажмите раскрывающийся список, связанный с сервером
— подожди несколько секунд
— Базы данных на вашем компьютере или в сети покажет
— Выберите сервер базы данных, к которому вы хотите подключиться.
— Нажмите кнопку «Далее
6. В следующем окне
— Выберите с проверкой подлинности SQL Server
— Введите свой логин (имя пользователя) и пароль для этой базы данных
— Нажмите кнопку «Далее
7. В следующем окне
— Выберите «Изменить базу данных по умолчанию на:» базу данных, к которой вы хотите подключиться.
— Нажмите кнопку «Далее
8. В следующем окне вам не нужно ничего менять, просто нажмите Готово.
9. Появится новое окно со всей вашей информацией о доставке.
10. Чтобы проверить соединение DSN, нажмите «Проверить источник данных …» — Если все в порядке, появится новое окно «ИСПЫТАНИЯ ЗАВЕРШЕНЫ УСПЕШНО!» — Нажмите «ОК», чтобы закрыть окно результатов.
11. Нажмите OK еще раз, чтобы завершить настройку.
12. В главном окне в разделе «Источники данных пользователя» вы увидите только что созданный DSN.
13. Нажмите OK, чтобы выйти.

Источник: https://www.youtube.com/watch?v=ehVFtmhPwxs

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector