Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Падение 1С при работе с MySQl с помощью 1С++ ??? (число прочтений - 2055 )
BorisHighLander
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 22
Зарегистрирован: 10. Декабря 2007
Пол: Мужской
Падение 1С при работе с MySQl с помощью 1С++ ???
04. Ноября 2008 :: 08:38
Печать  
Имеется следующий код взятый из примера по 1С++:
Код
Выбрать все
DataBase = СоздатьОбъект("ODBCDatabase");
	Если DataBase.Соединение("DRIVER={MySQL ODBC 3.51 Driver}; SERVER="+id_server+"; DATABASE="+id_database+"; USER="+id_user+"; PASSWORD="+id_password+"; OPTION=3;") = 0 Тогда
		Сообщить("Неудалось подключиться к базе сайта, проверьте наличие драйвера, адрес сервера и наличие связи!!!", "!!!");
	КонецЕсли;
	рс = СоздатьОбъект("ODBCRecordSet");
	рс.SetDatabase(DataBase);
	Ответ = рс.Выполнить("set names cp1251");
	Сообщить(Ответ);
	DataBase.Закрыть();
 


ODBC драйвер MySQL версии 3.51.23 с оффсайта, версия MySQL 5.0.45.
При его выполнении 1С вылетает, однако без DataBase.Закрыть() все работает, но при этом остаются висеть коннекты к базе. Если перед закрытием коннекта выполнить инструкцию типа
Код
Выбрать все
тз = рс.ВыполнитьИнструкцию("SELECT * FROM Table LIMIT 10"); 

, то коннект закрывается без проблем.
Это конечно не очень серьёзная проблема, но я потратил на это некоторое время.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Падение 1С при работе с MySQl с помощью 1С++ ???
Ответ #1 - 04. Ноября 2008 :: 08:54
Печать  
У меня все работает ок.
приведи свой запрос полностью.
только предочитаю открывать соеденение через dsn.
Если используется только чтение из бд то лучше ставить
DataBase.УстТолькоЧтение(1);
и перед закрытием базы данных надо закрывать recordset.
pc.Закрыть();
DataBase.Закрыть();


  
Наверх
 
IP записан
 
BorisHighLander
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 22
Зарегистрирован: 10. Декабря 2007
Пол: Мужской
Re: Падение 1С при работе с MySQl с помощью 1С++ ???
Ответ #2 - 04. Ноября 2008 :: 08:57
Печать  
Спасибо, как оказывается все просто. Надо лишь закрывать recordset. Еще раз спасибо. Очень довольный
  
Наверх
 
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: Падение 1С при работе с MySQl с помощью 1С++ ???
Ответ #3 - 06. Ноября 2008 :: 12:21
Печать  
BorisHighLander писал(а) 04. Ноября 2008 :: 08:57:
Спасибо, как оказывается все просто. Надо лишь закрывать recordset. Еще раз спасибо. Очень довольный


гм... А ещё проще было бы сразу почитать FAQ текущего раздела форума.
В частности, ответ#14 гласит:

Текущие особенности и порядок деинициализации объектов ODBCRecordSet и ODBCDataBase
http://www.1cpp.ru/forum/YaBB.pl?num=1162472281/8#8 (пост №8 Quan)
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
BorisHighLander
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 22
Зарегистрирован: 10. Декабря 2007
Пол: Мужской
Re: Падение 1С при работе с MySQl с помощью 1С++ ???
Ответ #4 - 11. Ноября 2008 :: 08:49
Печать  
Увы, через поиск не нашёл, а полностью прочитать FAQ не догадался Печаль
Спасибо за подсказку.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать