Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Fox и Oracle / 20 сообщений из 20, страница 1 из 1
05.04.2010, 18:30
    #36561827
help_me_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox и Oracle
Добрый вечер!

С Oracle только начала "связываться". и есть вопросы. прочитала что есть здесь по интересующему меня вопросу, но оказалось, что то, что мне нужно узнать описано для "новичка" не совсем понятно.
Потому прошу знатоков программирования на foxpro с использованием БД на oracle, если можно ответить на мой вопрос.
подключаюсь с помощью SQLSTRINGCONNECT(...) через ODBC
как делать выборки понятно. но вот нужно вывести в combobox колонку таблички oracle. тут все пишут об курсорадаптере. пожалуйста, объясните что это за "зверь", как его создать и использовать. потому как кроме того, что combobox можно просматривать, нужна еще и возможность добавлять/редактировать записи => обновлять табличку oracle. если можно то опишите принципы работы и команды.

Заранее спасибо!
...
Рейтинг: 0 / 0
05.04.2010, 19:22
    #36561887
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox и Oracle
CursorAdapter - это класс. Чтобы понять, как он работает, попробуйте поставить себя на место разработчиков. Тогда Вы быстро "въедите" в его логику.

Есть SQL-сервер. Есть клиентское приложение. Когда Вы делает запрос к SQL-серверу, Вы получаете некую выборку данных и копируете ее в клиентское приложение. Ключевым здесь является термин "копирование".

Другими словами, то, что видит пользователь не есть то, что реально хранится на SQL-сервере. Пользователь видит некую копию данных. Соответственно и меняет он копию данных. А затем необходимо организовать процесс переноса изменений из копии в собственно SQL-сервер.

Выборка из SQL-сервера осуществляется командой Select-SQL. Модификация данных на SQL-сервере осуществляется соответственно командами Insert-SQL, Update-SQL, Delete-SQL. Класс CursorAdapter позволяет до некоторой степени упростить процесс ручного написания соответствующих команд заменяя их набором настроек. Т.е. на сервер все-равно посылаются SQL-команды, просто программисту их писать не надо. Их "пишет" класс CursorAdapter.

Что и как надо настривать поищите на этом форуме. Сделайте поиск по словам "CursorAdapter", "Remote View", "SqlExec"

PS: Объект ComboBox - это объект только и исключиельно для выбора значения из списка. Использовать его для ввода значений в выпадающий список, который он же и отображает - не самое лучшее решение. Возможно, но лучше не надо. Вы просто не сможете отличить ввод нового значения от ошибки выбора. Как следствие - получите много мусора в данных.
...
Рейтинг: 0 / 0
06.04.2010, 06:59
    #36562300
fvi
fvi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox и Oracle
oApp.gnConnectHandle = SQLStringConnect("DSN=OracleXE; UID=FVI; PWD=fvi; DBQ=XE")

*** Выборка

lnSetprop = SQLSETPROP(oApp.gnConnectHandle, 'asynchronous', .F.)

leCommand = 'SELECT * '
leCommand = leCommand + ' FROM medical '
leCommand = leCommand + " WHERE APPOINT = '" + oApp.gcAppoint + "' AND "
leCommand = leCommand + " BRANCH = '" + oApp.gcBranch + "'"

lnConnHandle = SQLEXEC(oApp.gnConnectHandle, leCommand, "vMedic_temp")

*** Добавление

lcSelect = " INSERT INTO dispan ( Iden, Name, Otch, Birth, "
lcSelect = lcSelect + " Confirm_grup, Confirm_data )"
lcSelect = lcSelect + " VALUES ('" + oApp.gcIden + "', "
lcSelect = lcSelect + "'" + oApp.gcName + "', "
lcSelect = lcSelect + "'" + oApp.gcOtch + "', "
lcSelect = lcSelect + "'" + lcBirth + "', "
lcSelect = lcSelect + "'" + oApp.gcConfirm_grup + "', "
lcSelect = lcSelect + "'" + lcConfirm_data + "'" + ")"

lnConnHandle = SQLEXEC(oApp.gnConnectHandle, lcSelect)

*** Изменение

lcSelect = " UPDATE dispan SET "
lcSelect = lcSelect + " Confirm_grup = '" + oApp.gcConfirm_grup + "' , "
lcSelect = lcSelect + " Confirm_data = '" + lcConfirm_data + "'"
lcSelect = lcSelect + " WHERE IDEN = '" + oApp.gcIden + "' AND "
lcSelect = lcSelect + " NAME = '" + oApp.gcName + "' AND "
lcSelect = lcSelect + " OTCH = '" + oApp.gcOtch + "' AND "
lcSelect = lcSelect + " BIRTH = '" + lcBirth + "' "

lnConnHandle = SQLEXEC(oApp.gnConnectHandle, lcSelect)
...
Рейтинг: 0 / 0
06.04.2010, 07:25
    #36562306
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox и Oracle
fvi,

1)это откуда и зачем?
2)откройте для себя команду TEXT...ENDTEXT
...
Рейтинг: 0 / 0
06.04.2010, 16:34
    #36563861
help_me_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox и Oracle
ВладимирМ,

Спасибо. цель ясна. буду уточнять детали.
...
Рейтинг: 0 / 0
06.04.2010, 20:51
    #36564435
Vch1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox и Oracle
Курсорадаптер не обеспечивает одно из основных требований клиент-серверных приложений - безопасность данных базы. Поэтому для серьезных баз я считаю применять его не следует. Концептуально: пользователь получает доступ к данным через объект оракла view только для чтения. Изменение данных выполняется только через процедуры оракла, доступ к которым пользователь получает только для исполнения. Процедуры содержат логику контроля прав пользователя на выполнение изменений и логику установленных правил контроля данных. Доступ к таблицам у пользователя отсутствует. На клиентском компьютере grid - только для чтения. Изменения - через отдельное окно с передачей данных в процедуру оракла и анализом ответа о проведенных изменениях.
...
Рейтинг: 0 / 0
06.04.2010, 21:04
    #36564457
Ffffffffffffffff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox и Oracle
Vch1, курсорадаптер тоже может все это обеспечить.
...
Рейтинг: 0 / 0
07.04.2010, 11:40
    #36565251
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox и Oracle
Vch1Курсорадаптер не обеспечивает одно из основных требований клиент-серверных приложений - безопасность данных базы.
Вы путаете цель и способ ее достижения.

Насколько я понимаю, под обеспечением безопасности данных Вы понимаете тот факт, что должна быть возможность разрешать/запрешать пользователю просматривать/изменять те или иные данные.

Для начала, Вы, как и многие до Вас, кое-что принимает "по умолчанию" по принципу "ну, это же очевидно!". И только когда начинаешь "проговаривать" эти самые "очевидные" вещи, выясняется, что не очень-то и очевидно.

Что в Ваших рассуждениях пропущено?

Во-первых, тот "очевидный" факт, что Вы исходите из предположения, что к базе данных может быть организован доступ из разных приложений. Что, вообще-то говоря, сомнительно. Обычно база данных создается под одно конкретное приложение и права доступа регулируются на уровне приложения.

Следующее предположение "по умолчанию", что эти разные приложения будут написаны разными группами разработчиков. Разными в том смысле, что они не имеют единого стандарта обеспечения прав доступа на уровне самого приложения. Что, опять же, вызывает сомнения. Обычно все-таки база данных обслуживает вполне конкретная группа разработчиков, имеющая некий корпоративный стандарт обеспечения прав доступа.

Наконец, что же все-таки обычно имеют в виду при подобных высказываниях на самом деле ? Да тот элементарный факт, что базы данных кто-то будет просматривать напрямую через приложения MS Office (Access, Excel)! А стоит ли эта задача такого усложнения системы? Как правило - нет. И тому есть много причин.


Подавляющее большинство задач - это база данных, разработанная для целей "обслуживания" одного конкретного приложения, ну или группы приложений, создаваемых одной командой разработчиков. Поэтому где именно осуществлять контроль доступа: на уровне базы данных или на уровне приложения - не имеет принципиальной разницы.

Более того, любое клиент-серверное приложение стремится получить себе админские права по доступу к данным и "рулить" доступом уже внутри собственно приложения. По той простой причине, что кроме обеспечения доступа к данным необходимо еще определять права доступа к интерфейсу.

И если база данных "знает" о самих данных и может как-то управлять доступностью к ним, то вот об интерфейсе она ничего не знает. Как следствие, и управлять доступностью не может!

Для справки:

Если нет прав на выборку - то можно поставить свойство CursorAdapter.NoData = .T. и не будет в выборке никаких данных.
...
Рейтинг: 0 / 0
07.04.2010, 20:39
    #36567073
Vch1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox и Oracle
Под безопасностью данных я понимаю полностью контролируемый сервером (ораклом) доступ к данным базы со стороны не привелигированных пользователей не зависимо от того какими средствами выполняется попытка получить доступ (клиентская часть на фоксе, или другие программные средства, например PL SQL Developer). Оракл позволяет обеспечить такой уровень безопасности. С помощью оракла создают большие базы с большим количеством пользователей разного уровня подготовки. Для таких баз обеспечение безопасности данных - одно из основных требований. Понятно, за выполнение таких требований нужно платить. Но для небольших приложений нет смысла применять оракл. Я не ставлю под сомнение полезность курсорадаптера. А говорю о том, что его применение для обслуживания баз данных оракла (больших хранилищ данных с многопользовательским доступом, назначение оракла) не оправдано по причине ослабления уровня безопасности сервера оракла.
...
Рейтинг: 0 / 0
07.04.2010, 20:55
    #36567096
Vch1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox и Oracle
ВладимирМ
И если база данных "знает" о самих данных и может как-то управлять доступностью к ним, то вот об интерфейсе она ничего не знает. Как следствие, и управлять доступностью не может!

Может, если нужно. В оракле создается карточка пользователя с правами доступа, в т.ч. и пунктами меню приложения на фоксе. Доступ на изменение карточки получают технологи системы (ограниченная група привелигерованных пользователей). Конкретный пользователь получает доступ к карточке только на чтение. При регистрации пользователя в оракле клиентское приложение получает информацию о доступных пользователю пунктах меню и выполняет настройку доступных ему пунктов меню. Все очень просто. Более того, в карточке прописаны и права на выполнение операций. Это позволяет отключать кнопки выполнения операций на формах.
...
Рейтинг: 0 / 0
07.04.2010, 21:52
    #36567157
Fox и Oracle
Vch1Я не ставлю под сомнение полезность курсорадаптера. А говорю о том, что его применение для обслуживания баз данных оракла (больших хранилищ данных с многопользовательским доступом, назначение оракла) не оправдано по причине ослабления уровня безопасности сервера оракла.Djn отсюда подробнее. Каким образом сие происходит? Каким образом ослабляет?
...
Рейтинг: 0 / 0
08.04.2010, 01:39
    #36567303
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox и Oracle
Vch1Под безопасностью данных я понимаю полностью контролируемый сервером (ораклом) доступ к данным базы со стороны не привелигированных пользователей не зависимо от того какими средствами выполняется попытка получить доступ (клиентская часть на фоксе, или другие программные средства, например PL SQL Developer).
Что и требовалось доказать. Вы говорите о доступе к данным из ВНЕ приложения. Некий "хакерские" трюки. Что, как правило, не очень-то и нужно.

Ну, например, Вы сами сможете разобраться без документации во всех взаимосвязях небольшой базы данных таблиц эдак на сотню..другую? Ну, наверное, помучившись несколько недель сможете... Но, что более реально, все-таки обратитесь к разработчику, чтобы он предоставил Вам некий интерфейс как-то предварительно организовав данные. Разумеется, программист предусмотрит безопасный доступ к таким данным. Зачем городить огород с хранимыми процедурами?

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

Vch1В оракле создается карточка пользователя с правами доступа, в т.ч. и пунктами меню приложения на фоксе. Доступ на изменение карточки получают технологи системы (ограниченная група привелигерованных пользователей). Конкретный пользователь получает доступ к карточке только на чтение.
Вы опять путаете цель и средства ее достижения.

Разумеется, регулирование прав доступа осуществляется при помощи таблиц с ролями. Где-то ведь надо хранить информацию о том, что и кому доступно. Естественно в каких-то таблицах.

Только вот, мало иметь информацию, надо ее еще применить. А разве сами пункты меню, формы, кнопки, объекты хранятся на сервере? Нет конечно. Т.е. Вы берете информацию о доступности объектов из БД, переносите эту информацию на клиентское приложение, а затем, на основании этой информации определяете доступность объектов клиентского приложения. При чем здесь ХП сервера? CursorAdapter вполне справится с извлечением этой информации. Применение этой информации все-равно задача приложения!
...
Рейтинг: 0 / 0
08.04.2010, 19:55
    #36569431
Vch1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox и Oracle
Что и требовалось доказать. Вы говорите о доступе к данным из ВНЕ приложения. Некий "хакерские" трюки. Что, как правило, не очень-то и нужно.
---------------
Как раз наоборот, очень нужно. Система должна гарантировать безопасность данных. Полагаться на порядочность пользователей и их добрые намерения нельзя. Кроме того уровень подготовки пользователей разный. А инструментальные средства доступа к серверу оракла позволяют довольно просто внести изменения в данные или уничтожить их (при наличии прав), например с помощью PL/SQL Developer. Поэтому необходимо: полностью исключить непосредственный доступ пользователей к данным сервера и полностью взять под контроль сервера управление областью видимости данных, прав и правил внесения изменений в данные, исключив при этом возможность пользователям изменять установленные для них правила и права. Оракл позволяет это сделать с помощь объектов: представления (view). роли, хранимые процедуры оракла. Доступ к базе выполняется без регистрации в операционной системе, на которой установлен сервер.
...
Рейтинг: 0 / 0
08.04.2010, 20:10
    #36569467
Vch1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox и Oracle
Вы берете информацию о доступности объектов из БД, переносите эту информацию на клиентское приложение, а затем, на основании этой информации определяете доступность объектов клиентского приложения. При чем здесь ХП сервера?
-------------

Да, для управления объектами клиентского приложения информация поступает из сервера. Но, как я уже говорил, права и правила изменения данных прошиты в хранимой процедуре и таблицах сервера. Пользователь может изменить данные только через хранимую процедуру. У него нет прав на изменение хранимой процедуры и таблиц с правами. Переданные с клиентского приложения данные для изменения проходят проверку в хранимой процедуре перед регистрацией в таблицах. Непосредственный доступ к таблицам имеют только хранимые процедуры.
...
Рейтинг: 0 / 0
08.04.2010, 20:40
    #36569507
Fffffffffffffffff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox и Oracle
Парень, тут, между прочим, почти все с серверами работают.
Владимир пытается тебе объяснить, что ты ошибаешься в некоторых концептуальных вещах, а ты лекции читаешь про вещи, которые находятся на два уровня ниже.

Ну это так, по-доброму.
...
Рейтинг: 0 / 0
08.04.2010, 21:11
    #36569537
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox и Oracle
Vch1

Давайте так. Кто вообще имеет прямой доступ к базе данных? Т.е. может напрямую подключится, ну, например, из Access? Любой желающий? И администратор базы данных допускает подобное подключение? И его еще до сих пор не уволили?

Или все-таки "узок круг этих приложений"? В том смысле, что подключение к базе данных в принципе возможно только под вполне определенными логинами, которые выдаются определенным приложениям? Если влез кто-то из другого приложения, такое соединение автоматически пресекается. Разными способами.

Если доступ осуществляется только и исключительно из приложения, то какая разница кто будет контролировать права доступа? Собственно сервер или клиентское приложение? Ведь прямое подключение к базе минуя приложение запрещено.
...
Рейтинг: 0 / 0
09.04.2010, 16:11
    #36571161
Vch1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox и Oracle
В том смысле, что подключение к базе данных в принципе возможно только под вполне определенными логинами, которые выдаются определенным приложениям?
---------------------

В оракле логины выбаются пользователям, а не приложениям. Я встречал проекты, где логины и пароли обслуживает приложение, а пароль и логин доступа к базе оракл скрыт от пользователя в приложении. На мой взгляд такая схема менее безопасна.
...
Рейтинг: 0 / 0
09.04.2010, 16:19
    #36571193
Vch1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox и Oracle
Fffffffffffffffff

Однажды в шахматном клубе я стал свидетелем разговора кандитата в мастера спорта по шахматам с международным гроссмейстером. КМС говорит: Мы тоже играем в шахматы. На что Гроссмейстер ответил: Вы играете не в те шахматы.
...
Рейтинг: 0 / 0
09.04.2010, 16:34
    #36571245
Fox и Oracle
Vch1В том смысле, что подключение к базе данных в принципе возможно только под вполне определенными логинами, которые выдаются определенным приложениям?
---------------------

В оракле логины выбаются пользователям, а не приложениям. А сервер типа отличает юзера от приложения? А приложение не прикидывается юзером? Вы хотите позаниматься словесной эквилибристикой?Я встречал проекты, где логины и пароли обслуживает приложение, а пароль и логин доступа к базе оракл скрыт от пользователя в приложении. На мой взгляд такая схема менее безопасна.Вы думаете мало таких приложений? Думаете мы таких не видели? И о чем нам это может говорить? А Володя Максимов Вам не про это писал:
Более того, любое клиент-серверное приложение стремится получить себе админские права по доступу к данным ?

Вы на мой вопрос отвечать будете или как? Как курсорадаптер снижает безопасность работы с сервером?

ps: если можно, то поменьше воздыханий в сторону оракла.
больших хранилищ данных с многопользовательским доступом, назначение ораклаЭто не прерогатива одного только оракла.
...
Рейтинг: 0 / 0
09.04.2010, 17:47
    #36571473
Ffffffffffffffff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fox и Oracle
Vch1Fffffffffffffffff

Однажды в шахматном клубе я стал свидетелем разговора кандитата в мастера спорта по шахматам с международным гроссмейстером. КМС говорит: Мы тоже играем в шахматы. На что Гроссмейстер ответил: Вы играете не в те шахматы.

А шахматы тут причем? Вы уж продолжайте про Оракл.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Fox и Oracle / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]