Главная   Downloads   Разное  
FAQ     Поиск   Регистрация   Вход 
Текущее время: Чт мар 28, 2024 18:53

Часовой пояс: UTC + 3 часа (Russia: MSK)




Начать новую тему Ответить на тему  [ 9 сообщений ] 
Автор Сообщение
 Заголовок сообщения: Как впихнуть массив в базу данных "горизонтально"
СообщениеДобавлено: Ср янв 09, 2013 17:03 
Не в сети

Регистрация: Ср июн 15, 2011 11:20
Сообщения: 91
Откуда: UA
Вроде где-то встречал но так и не могу понять как это сделать.
Есть массив 170 элементов типа INT, надо его писать в базу данных с определенной периодичностью.
Решение "в лоб" это создать 170 переменных и 170 привязок их к полям таблицы, но это же не выход.
Может есть какие мысли или практические реализации, подскажите.


В начало
 Профиль  
 
 Заголовок сообщения: Re: Как впихнуть массив в базу данных "горизонтально"
СообщениеДобавлено: Чт янв 10, 2013 07:36 
Не в сети

Регистрация: Пт июл 01, 2011 07:15
Сообщения: 32
Откуда: Ижевск
Есть еще не менее прямолинейное решение. Написать в скриптах конструкцию на вроде
Код:
SQL = "INSERT into Table_1 VALUES ("+ValueToText(array(0))+","+ValueToText(array(1))+",...,"+ValueToText(array(169))+")"
call DBExecute( "Connection1", "SQL", SQL )

где array - ваш массив с данными.


В начало
 Профиль  
 
 Заголовок сообщения: Re: Как впихнуть массив в базу данных "горизонтально"
СообщениеДобавлено: Пн янв 14, 2013 14:40 
Не в сети

Регистрация: Ср июн 15, 2011 11:20
Сообщения: 91
Откуда: UA
Спасибо Андрей, мне это реально помогло.
Почему-то в мануале не описана команда SQL для DBExecute.


В начало
 Профиль  
 
 Заголовок сообщения: Re: Как впихнуть массив в базу данных "горизонтально"
СообщениеДобавлено: Пн янв 14, 2013 15:51 
Не в сети

Регистрация: Ср июн 15, 2011 11:20
Сообщения: 91
Откуда: UA
Чтобы не писать длиннокорявый запрос хотел в цикле сделать через UPDATE но при этом заметно тормозит комп. База не тянет сто запросов подряд.


В начало
 Профиль  
 
 Заголовок сообщения: Re: Как впихнуть массив в базу данных "горизонтально"
СообщениеДобавлено: Вт янв 15, 2013 07:18 
Не в сети

Регистрация: Пт июл 01, 2011 07:15
Сообщения: 32
Откуда: Ижевск
olegzh писал(а):
База не тянет сто запросов подряд.
Можно поинтересоваться, какую СУБД используете?


В начало
 Профиль  
 
 Заголовок сообщения: Re: Как впихнуть массив в базу данных "горизонтально"
СообщениеДобавлено: Вт янв 15, 2013 09:15 
Не в сети

Регистрация: Ср июн 15, 2011 11:20
Сообщения: 91
Откуда: UA
AndyRay писал(а):
Можно поинтересоваться, какую СУБД используете?

В последнее время использую только MySQL.
Но в данном случае не в базе дело. Я так думаю это подтормаживает ODBC драйвер MySQLя.


В начало
 Профиль  
 
 Заголовок сообщения: Re: Как впихнуть массив в базу данных "горизонтально"
СообщениеДобавлено: Вт янв 15, 2013 10:24 
Не в сети

Регистрация: Ср июн 15, 2011 11:20
Сообщения: 91
Откуда: UA
Поистине лень-двигатель прогресса.
Вобщем стояла задача массив из контроллера писать в базу с заданным периодом для восстановления потом хронологии событий в случае чего.
В итоге все вылилось в след. код:

sql_query_tot=""
for nn=0 to 99
sql_query[nn]=ValueToText(In[nn])
sql_query_tot=sql_query_tot+","+sql_query[nn]
next
SQL = "INSERT INTO Table_1 VALUES ('"+$Date+"','"+$Time+"'"+sql_query_tot+")"
DBExecute( "Connection1", "SQL", SQL )

Где:
sql_query[ ] - массив (текст)
sql_query_tot - промежуточная перемаенная (текст)
In[ ] - массив кот. необходимо ложить в БД


В начало
 Профиль  
 
 Заголовок сообщения: Re: Как впихнуть массив в базу данных "горизонтально"
СообщениеДобавлено: Пн янв 28, 2013 14:37 
Не в сети

Регистрация: Пн фев 02, 2009 10:22
Сообщения: 48
olegzh писал(а):
Чтобы не писать длиннокорявый запрос хотел в цикле сделать через UPDATE но при этом заметно тормозит комп. База не тянет сто запросов подряд.



Попробуйте такую конструкцию:

FOR i=1 TO Table_Count
Result=DBAddNew("Connection."+ Table_Name[i])
NEXT

Перед этим необходимо заполнить Database\Connection
Работает шустро.


В начало
 Профиль  
 
 Заголовок сообщения: Re: Как впихнуть массив в базу данных "горизонтально"
СообщениеДобавлено: Пн янв 28, 2013 17:12 
Не в сети

Регистрация: Ср июн 15, 2011 11:20
Сообщения: 91
Откуда: UA
спасибо ,при случае попробую, но в данном случае сделал как написано постом выше.


В начало
 Профиль  
 
Показать сообщения за:  Сортировка  
Начать новую тему Ответить на тему  [ 9 сообщений ] 

Часовой пояс: UTC + 3 часа (Russia: MSK)


Кто сейчас на конференции

Сейчас этот форум просматривают: в настоящее время на конференции нет зарегистрированных пользователей и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Переход:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская документация по phpBB 3