Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Boost ODBC проблемы соединения  
V
    Опции темы
boostcoder
Дата 5.9.2010, 04:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



всем доброго утра.

по работе с БД - новичек. прошу не пинать за глупые вопросы.

и так...
нужно поработать с БД из клиентского приложения. есть удаленный MySQL сервер, который прекрасно работает.
для "общения" с сервером, выбрал это, ибо самая абстрактная.
накатал микропримерчик:
Код

#include <iostream>
#include <boost/rdb/sql.hpp>
#include <boost/rdb/odbc.hpp>

using namespace boost::rdb::sql;
using namespace boost::rdb::odbc;

/***************************************************************************/

int main(int argc, char** argv) {
   try {
      database db("server=123.45.67.89 database=anyDB", "anyuser", "blablabla");
   } catch (const std::exception& e) {
      std::cout << e.what() << std::endl;
   }

   return EXIT_SUCCESS;
}

/***************************************************************************/

попробовал скомпилить, и понял, что не хватает либ/хидеров.
лазая по гуглу, понял, что нужен ODBC коннектор. скачал, собрал, проинсталил это.
все, теперь мой экзампл компилится.
при запуске получаю это:
Цитата

[MySQL][ODBC 5.1 Driver]Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

не понимаю, почему он пытается коннектиться на локальную БД?
по сей либе только эта дока.
БД на том конце провода живая. могу к ней подключиться используя mysql терминал.

зы
модераторы, перенесите в соответствующий раздел. я так и не понял к какому разделу моя тема соотносится.

Это сообщение отредактировал(а) boostcoder - 5.9.2010, 04:44
PM WWW   Вверх
jonie
Дата 5.9.2010, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



ну есть мнение что коннекшен стринг у вас неверный.
тут можнт глянуть http://www.connectionstrings.com/mysql


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
boostcoder
Дата 6.9.2010, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



перепробовал десятки комбинаций. не коннектиться.
в общем, подумав в более удобной обстановке, пришел к выводу, что boost.rdb мне нужна только из-за возможности писать SQL запрос в виде С++ кода. в остальном, оно мне не нравится. SOCI как-то по лучше спроектирована. но SQL запросы писать в ней нужно по старинке  smile 

но при попытке скомпилить минимальный пример:
Код

#include <iostream>
#include <boost/fusion/include/io.hpp>
#include <boost/rdb/sql.hpp>
#include <boost/rdb/odbc.hpp>

using namespace boost::rdb::sql;
using namespace boost::rdb::odbc;

BOOST_RDB_BEGIN_TABLE(person) 
   BOOST_RDB_COLUMN(id, integer)
   BOOST_RDB_COLUMN(name, varchar<20>)
   BOOST_RDB_COLUMN(age, integer)
BOOST_RDB_END_TABLE(person) 

template<class T>
std::string to_str(const T& obj) {
   std::ostringstream os;
   obj.str(os);
   return os.str();
}

int main() {
   person p;
   std::string str = to_str(select(p.name, p.age).where(p.id == 0));
   std::cout << str << std::endl;

   return 0;
}


получаю такую ошибку:
Цитата

boost/rdb/sql/expression.hpp: In instantiation of 'boost::rdb::sql::extract_placeholders_from_list::result<boost::rdb::sql::extract_placeholders_from_list(const boost::fusion::vector<>&, boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::varchar<20u>, person_<0>::name_base> >&)>':

boost/utility/result_of.hpp:68:1:   instantiated from 'boost::detail::result_of_nested_result<boost::rdb::sql::extract_placeholders_from_list, boost::rdb::sql::extract_placeholders_from_list(const boost::fusion::vector<>&, boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::varchar<20u>, person_<0>::name_base> >&)>'

boost/utility/result_of.hpp:75:1:   instantiated from 'boost::detail::result_of_impl<boost::rdb::sql::extract_placeholders_from_list, boost::rdb::sql::extract_placeholders_from_list(const boost::fusion::vector<>&, boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::varchar<20u>, person_<0>::name_base> >&), false>'

boost/utility/detail/result_of_iterate.hpp:24:109:   instantiated from 'boost::result_of<boost::rdb::sql::extract_placeholders_from_list(const boost::fusion::vector<>&, boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::varchar<20u>, person_<0>::name_base> >&)>'

boost/fusion/algorithm/iteration/detail/fold.hpp:48:80:   instantiated from 'boost::fusion::detail::fold_apply<boost::fusion::vector<>, boost::fusion::vector_iterator<boost::fusion::vector<boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::varchar<20u>, person_<0>::name_base> >, boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::integer, person_<0>::age_base> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>, 0>, boost::rdb::sql::extract_placeholders_from_list>'

boost/fusion/algorithm/iteration/detail/fold.hpp:209:57:   instantiated from 'boost::fusion::detail::result_of_unrolled_fold<boost::fusion::vector<>, boost::fusion::vector_iterator<boost::fusion::vector<boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::varchar<20u>, person_<0>::name_base> >, boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::integer, person_<0>::age_base> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>, 0>, boost::rdb::sql::extract_placeholders_from_list, 2>'

boost/rdb/sql/select.hpp:18:74:   instantiated from 'boost::rdb::sql::result_of::extract_placeholders_from_map_entry<boost::rdb::ct::map_entry<boost::rdb::sql::sql2003::exprs, boost::fusion::vector<boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::varchar<20u>, person_<0>::name_base> >, boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::integer, person_<0>::age_base> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> > >'

boost/rdb/sql/expression.hpp:436:15:   instantiated from 'boost::rdb::sql::extract_placeholders_from_map::result<boost::rdb::ct::map_entry<boost::rdb::sql::sql2003::exprs, boost::fusion::vector<boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::varchar<20u>, person_<0>::name_base> >, boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::integer, person_<0>::age_base> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >, boost::fusion::vector<> >'

boost/rdb/detail/static_map.hpp:56:17:   instantiated from 'boost::rdb::ct::result_of::accumulate<boost::rdb::ct::map<boost::rdb::sql::sql2003::exprs, boost::fusion::vector<boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::varchar<20u>, person_<0>::name_base> >, boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::integer, person_<0>::age_base> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>, boost::rdb::ct::map0>, boost::rdb::sql::extract_placeholders_from_map, boost::fusion::vector<>, boost::rdb::ct::map_tag>'

boost/rdb/sql/expression.hpp:455:15:   instantiated from 'boost::rdb::sql::result_of::placeholders_from_map<boost::rdb::ct::map<boost::rdb::sql::sql2003::exprs, boost::fusion::vector<boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::varchar<20u>, person_<0>::name_base> >, boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::integer, person_<0>::age_base> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>, boost::rdb::ct::map0> >'

boost/rdb/sql/select.hpp:78:67:   instantiated from 'boost::rdb::sql::select_statement<boost::rdb::sql::sql2003, boost::rdb::sql::sql2003::exprs, boost::rdb::ct::map<boost::rdb::sql::sql2003::exprs, boost::fusion::vector<boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::varchar<20u>, person_<0>::name_base> >, boost::rdb::sql::expression<boost::rdb::sql::column<person_<0>, boost::rdb::core::integer, person_<0>::age_base> >, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>, boost::rdb::ct::map0>, boost::rdb::sql::sql2003>'

boost/rdb/sql/expression.hpp:18:160: error: no type named 'placeholder_vector' in 'const struct boost::fusion::vector<>'


логично. потому что в boost::fusion::vector<>, нет свойства placeholder_vector.
лазание по хидерам, успехов не принесло.
буду благодарен любой помощи.
спасибо.


Это сообщение отредактировал(а) boostcoder - 6.9.2010, 17:54
PM WWW   Вверх
boostcoder
Дата 16.9.2010, 01:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



up.
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0526 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.