Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   JavaScript и СУБД Oracle: как их подружить? (https://javascript.ru/forum/misc/28824-javascript-i-subd-oracle-kak-ikh-podruzhit.html)

Майя 04.06.2012 12:22

JavaScript и СУБД Oracle: как их подружить?
 
Здравствуйте.
Я немного пишу на javascript. Сделала небольшой скрипт, который лежит на диске, запускается и выполняет некоторые функции.
Сейчас мне надо сделать так чтобы скрипт заглядывал в базу oracle, делал небольшой селект, и в зависимости от возвращенного значения продолжал работу или нет. Предметно: нужно чтобы скрипт делал запрос типа:
Select _status_ from maya.statuses
 where upload_date = (select max(upload_date) from maya.statuses);


Если вернет 1, то продолжаем работу скрипта, если 0, то останавливаемся.

Буду благодарна за любые советы, ссылки и примеры кода. Мне просто надо понять в какую сторону двигаться.
Спасибо.

DreamTheater 04.06.2012 12:47

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

Майя 04.06.2012 12:50

может использовать
Run(<Command>,<WindowStyle>,<WaitOnReturn>)
?
только не ясно может ли WaitOnReturn вернуть значение селекта?

dmitriymar 04.06.2012 12:58

Цитата:

Сообщение от Майя
Я немного пишу на javascript.

Цитата:

Сообщение от Майя
может использовать
Run(<Command>,<WindowStyle>,<WaitOnReturn>)
?
только не ясно может ли WaitOnReturn вернуть значение селекта?

вы уверены что это js а не грибы?:)

DreamTheater 04.06.2012 12:58

Вы сейчас точно о JavaScript говорите?

Майя 04.06.2012 14:02

Ну у меня такой код в скрипте есть (скрипт на диске лежит, расширение wsf, но JS используется):

oShell.run ("cmd /c sqlplus.exe schema/pass@DB @ C:\\proc.sql", 2 /* SW_SHOWNORMAL */, true /* bWaitOnReturn */);

так что это не грибы =) вроде...

Майя 04.06.2012 14:11

как "результат в oShell", который возвращается, поймать в javascript?

Майя 04.06.2012 14:11

php не знаю вообще.

Майя 04.06.2012 14:24

а может такой вариант: 1. написать oracle процедуру которая выгружала бы результат запроса в файл 2. Javascript заглядывал бы в файл и читал содержание (одно слово). Это конечно странный способ но он может сработать. что думаете?

DreamTheater 04.06.2012 14:41

Цитата:

Сообщение от Майя (Сообщение 178738)
а может такой вариант: 1. написать oracle процедуру которая выгружала бы результат запроса в файл 2. Javascript заглядывал бы в файл и читал содержание (одно слово). Это конечно странный способ но он может сработать. что думаете?

JavaScript не умеет работать с файловой системой :)

lord2kim 04.06.2012 14:44

Цитата:

Сообщение от DreamTheater (Сообщение 178743)
JavaScript не умеет работать с файловой системой :)

легко умеет...
только над задачей нужно подумать конкретно...может WMI чем то поможет...

Цитата:

Сообщение от Майя (Сообщение 178738)
а может такой вариант: 1. написать oracle процедуру которая выгружала бы результат запроса в файл 2. Javascript заглядывал бы в файл и читал содержание (одно слово). Это конечно странный способ но он может сработать. что думаете?

для начального варианта можно и так попробовать...
нужно посмотреть в каком варианте Oracle хранит БД...

Майя 04.06.2012 14:46

может я вопросы не так формулирую, или так: я использую Jscript для написания windows script file. Я правильно обратилась на этот форум?

lord2kim 04.06.2012 14:47

Цитата:

Сообщение от Майя (Сообщение 178745)
может я вопросы не так формулирую, или так: я использую Jscript для написания windows script file. Я правильно обратилась на этот форум?

WSH конечно ближе к "JavaScript под браузер (IE)"

DreamTheater 04.06.2012 14:47

Цитата:

Сообщение от Майя (Сообщение 178745)
может я вопросы не так формулирую, или так: я использую Jscript для написания windows script file. Я правильно обратилась на этот форум?

А, ну так надо было сразу с этого начинать :)

Майя 04.06.2012 14:48

я файлы своим скриптом обрабатываю. еще про ADO почитала и похоже это может помочь.

Майя 04.06.2012 14:49

Извините, если запутала. :thanks:

lord2kim 04.06.2012 14:51

Цитата:

Сообщение от Майя (Сообщение 178750)
я файлы своим скриптом обрабатываю. еще про ADO почитала и похоже это может помочь.

в правильном направлении мыслишь)
здесь что-то писал по этому поводу)

Майя 04.06.2012 14:57

Как считает, если что-то такое написать:
var conObj = new ActiveXObject("ADODB.Connection");
		var conString = "Provider=OraOLEDB.Oracle; Data Source=(DESCRIPTION=(CID=GTU_APP)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=202.125.144.34)(PORT=1521)))(CONNECT_DATA=(SID=orcl)(SERVER=DEDICATED)));User Id=admin; Password=admin;"
		conObj.Open(conString);
		var rs =  new ActiveXObject("ADODB.Recordset");
		sql = "SELECT * from DUAL"
		rs.open(sql,conString);
		var rsnum=rs.fields.count;
		alert(rsnum);
		rs.close;
		conObj.close;

будет работать?
или это вообще попытка пришить к платью пассатижи?

lord2kim 04.06.2012 15:05

Цитата:

Сообщение от Майя (Сообщение 178760)
Как считает, если что-то такое написать:
var conObj = new ActiveXObject("ADODB.Connection");
		var conString = "Provider=OraOLEDB.Oracle; Data Source=(DESCRIPTION=(CID=GTU_APP)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=202.125.144.34)(PORT=1521)))(CONNECT_DATA=(SID=orcl)(SERVER=DEDICATED)));User Id=admin; Password=admin;"
		conObj.Open(conString);
		var rs =  new ActiveXObject("ADODB.Recordset");
		sql = "SELECT * from DUAL"
		rs.open(sql,conString);
		var rsnum=rs.fields.count;
		alert(rsnum);
		rs.close;
		conObj.close;

будет работать?
или это вообще попытка пришить к платью пассатижи?

ну это попробовать в первую очередь нужно...
может это чем поможет...с БД ADODB не работал прост((((

Майя 04.06.2012 15:11

буду пробовать... :thanks:

Майя 04.06.2012 18:28

Вложений: 1
Пока остановилось все тут:
var conObj = new ActiveXObject("ADODB.Connection");
        var conString = "Provider=OraOLEDB.Oracle; Data Source=(DESCRIPTION=(CID=GTU_APP)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=XX.XX.19.13)(PORT=1521)))(CONNECT_DATA=(SID=XXX)(SERVER=DEDICATED)));User Id=XXX; Password=XXX;"
        conObj.Open(conString);
        var rs =  new ActiveXObject("ADODB.Recordset");
        sql = "SELECT _STATUS from MAYA. CT_FILE where ID_EX = (select max(ID_EX) from MAYA. CT_FILE)"
        rs.open(sql, conString);
        var ext_status=rs.fields.count;
        alert(ext_status);
        rs.close;
        conObj.close;
        var today_log = new Date();
        log_time = today_log.getDate()+"."+ (today_log.getMonth()+1) + "." + today_log.getYear() + " " + today_log.getHours() + ":" + today_log.getMinutes() + ":" + today_log.getSeconds() + ":" + today_log.getMilliseconds();
        log.WriteLine(log_time +" "+ext_status+ " -  there is unprocessed item .");


Вылезает ошибка:
«Provider cannot be found. It may not be properly installed CODE: 800A0E7A. SOURCE: ADODB.Connection »
Пробую исправить. Может кто сталкивался?

dmitriymar 04.06.2012 18:44

надеюсь вы в курсе, что в случае,если вы справитесь с этим, это будет работать только в ие?

lord2kim 04.06.2012 21:25

Цитата:

Сообщение от dmitriymar (Сообщение 178870)
надеюсь вы в курсе, что в случае,если вы справитесь с этим, это будет работать только в ие?

человек же писал, что пользуется .wsf сценарием

Цитата:

Сообщение от Майя (Сообщение 178853)
Пока остановилось все тут:
var conObj = new ActiveXObject("ADODB.Connection");
        var conString = "Provider=OraOLEDB.Oracle; Data Source=(DESCRIPTION=(CID=GTU_APP)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=XX.XX.19.13)(PORT=1521)))(CONNECT_DATA=(SID=XXX)(SERVER=DEDICATED)));User Id=XXX; Password=XXX;"
        conObj.Open(conString);
        var rs =  new ActiveXObject("ADODB.Recordset");
        sql = "SELECT _STATUS from MAYA. CT_FILE where ID_EX = (select max(ID_EX) from MAYA. CT_FILE)"
        rs.open(sql, conString);
        var ext_status=rs.fields.count;
        alert(ext_status);
        rs.close;
        conObj.close;
        var today_log = new Date();
        log_time = today_log.getDate()+"."+ (today_log.getMonth()+1) + "." + today_log.getYear() + " " + today_log.getHours() + ":" + today_log.getMinutes() + ":" + today_log.getSeconds() + ":" + today_log.getMilliseconds();
        log.WriteLine(log_time +" "+ext_status+ " -  there is unprocessed item .");


Вылезает ошибка:
«Provider cannot be found. It may not be properly installed CODE: 800A0E7A. SOURCE: ADODB.Connection »
Пробую исправить. Может кто сталкивался?

миниатюру не видать...может ссылкой на хостинг картинок?)
кст а сам объект ADODB.Recordset и/или ADODB.Stream создается?)

Майя 05.06.2012 10:00

Вложений: 1
Цитата:

Сообщение от lord2kim (Сообщение 178942)
миниатюру не видать...может ссылкой на хостинг картинок?)

Прикрепила.
Цитата:

Сообщение от lord2kim (Сообщение 178942)
кст а сам объект ADODB.Recordset и/или ADODB.Stream создается?)

Не знаю. вроде не пока ругается только на это.

Ссылка на картинку: http://imageshost.ru/photo/39364/id2052771.html

lord2kim 05.06.2012 12:07

Цитата:

Сообщение от Майя (Сообщение 179056)
Прикрепила.

Не знаю. вроде не пока ругается только на это.

Ссылка на картинку: http://imageshost.ru/photo/39364/id2052771.html

мб путь не правильный? или такой библиотеки не существует?

Майя 05.06.2012 14:55

Вложений: 1
прошу прощения: прикрепленный скриншот - это попытка исправить ошибку, которая возникает при запуске скрипта и показана на прикрепленном рисунке и по ссылке: https://dl.dropbox.com/u/25164865/provider.JPG
т.е. нужно понять как исправить ошибку со скриншота и двигаться дальше.

Майя 05.06.2012 15:44

исправлено: на клиентскую машину, в моем случае, было необходимо доинсталировать Oracle Provider for OLE DB (10.2.0.2.20), который нужно было скачать тут http://www.oracle.com/technetwork/to...ft-086879.html.
Двигаюсь дальше.

lord2kim 05.06.2012 16:36

Цитата:

Сообщение от Майя (Сообщение 179145)
исправлено: на клиентскую машину, в моем случае, было необходимо доинсталировать Oracle Provider for OLE DB (10.2.0.2.20), который нужно было скачать тут http://www.oracle.com/technetwork/to...ft-086879.html.
Двигаюсь дальше.

не успел написать...почитал про это ошибку...везде пишут, что либо зарегистрировать .dll из папки "bin" Oracle, либо что-то добавить...
главное радует, что человек пишет получается/не получается...не часто пишут ответы на темы, если таковые в последствии находят...

Майя 05.06.2012 18:19

:thanks:


Часовой пояс GMT +3, время: 08:54.