|
Доступ к объектам в БД из метода класса
|
|||
---|---|---|---|
#18+
Здравствуйте! Недавно начал изучать Cache, столкнулся со следующей проблемой: Допустим в студии Cache я сделал простой класс:Class Test.Human Extends %Persistent { Property Name As %String; Property Id As %Integer; ClassMethod AddNewHuman(name As %String, human_id As %String) { } ClassMethod DeleteHuman(name As %String) { } ClassMethod FindHumanByName(name As %String) As Test.Human { } } Также я могу создать объекты класса Test.Human и сохранить их в БД через терминал: set human1 = ##class(Test.Human).%New(); do human1.%Save() Так вот суть проблемы: как создать и сохранить объекты, вызывая методы класса Test.Human? Или же например удалить объект из БД методом DeleteHuman(name As %String), т.е. проверить есть ли объект в БД с указанным именем, если есть - то удалить его? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2013, 19:23 |
|
Доступ к объектам в БД из метода класса
|
|||
---|---|---|---|
#18+
halcyonxкак создать и сохранить объекты, вызывая методы класса Test.Human? Да так же как и не из методов... Разницы нет никакой. У тебя есть два подхода: - классовый - SQLный Вот ими и орудуй... Если вообще про классы ничего не знаешь - скачай файл objectqs.pdf с сайта IS и прочти. Там все на русском и с примерами... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2013, 08:39 |
|
Доступ к объектам в БД из метода класса
|
|||
---|---|---|---|
#18+
krvsa, этот файл я изучил, поэтому самые базовые представления о создании класса, методов, и его свойств имею. Меня интересует другое, допустим в базе сохранено 1000 объектов данного класса, как к ним можно получить доступ? Грубо говоря, можно ли организовать цикл наподобие: Код: plaintext 1. 2. 3. 4. 5.
? Некоторое время программировал на C++, с бд и субд никогда дел не имел вообще :(. Может, посоветуете референс на правила синтаксиса и доступ к объектам в бд, для чайников? Или какой-нибудь элементарный пример кода. Буду признателен. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2013, 14:15 |
|
Доступ к объектам в БД из метода класса
|
|||
---|---|---|---|
#18+
halcyonx, Есть несколько вариаций перебора записей, в вашем случае лучше использовать SQL, например: &sql(declare cHuman cursor for select ID,Name into :id,:name from Test.Human) &sql(open cHuman ) for { &sql(fetch cHuman ) quit:SQLCODE'=0 ;id & name тут } &SQL(close cHuman ) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2013, 14:23 |
|
Доступ к объектам в БД из метода класса
|
|||
---|---|---|---|
#18+
halcyonxkrvsa, этот файл я изучил, поэтому самые базовые представления о создании класса, методов, и его свойств имею. Меня интересует другое, допустим в базе сохранено 1000 объектов данного класса, как к ним можно получить доступ? Грубо говоря, можно ли организовать цикл наподобие: Код: plaintext 1. 2. 3. 4. 5.
? Некоторое время программировал на C++, с бд и субд никогда дел не имел вообще :(. Может, посоветуете референс на правила синтаксиса и доступ к объектам в бд, для чайников? Или какой-нибудь элементарный пример кода. Буду признателен. :) Так можно, но можно поступить еще лучше, чтобы не открывать без надобности все объекты, имея список пользователей которые должны существовать, создаете в таблице пользователей уникальный индекс по полям его идентифицирующим, и проверяете на существование нужного пользователя, и при отсутствии создаете, и это будет работать быстрее. Проверка существования объекта по уникальному индексу описана в документации ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2013, 15:06 |
|
Доступ к объектам в БД из метода класса
|
|||
---|---|---|---|
#18+
halcyonxkrvsa, этот файл я изучил , поэтому самые базовые представления о создании класса, методов, и его свойств имею.Там же можете найти:
PS: массовые операции лучше делать через SQL, а не перебором в цикле объектов. Собственный Id в классе лишний, поскольку по умолчанию он уже в нём присутствует: Object Persistence . ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2013, 15:38 |
|
Доступ к объектам в БД из метода класса
|
|||
---|---|---|---|
#18+
halcyonxГрубо говоря, можно ли организовать цикл наподобие: Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2013, 16:45 |
|
Доступ к объектам в БД из метода класса
|
|||
---|---|---|---|
#18+
halcyonxпроверить есть ли в базе человек с таким же именем, если нет то добавить его Я бы проверку сделал SQL-запросом... А вот добавлять можно любым, удобным тебе, способом. Про ускорения и индексы тебе уже писали выше... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2013, 16:48 |
|
Доступ к объектам в БД из метода класса
|
|||
---|---|---|---|
#18+
krvsa Код: sql 1. 2. 3. 4. 5. 6.
Команда Код: javascript 1.
здесь лишняя, т.к. выход из области видимости переменной o и так удалит oRef. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2013, 17:05 |
|
Доступ к объектам в БД из метода класса
|
|||
---|---|---|---|
#18+
Alexey MaslovКоманда Код: javascript 1.
здесь лишняя, т.к. выход из области видимости переменной o и так удалит oRef. Я так же думал. Пока не с толкнулся со сменой областей... Т.ч. теперь киляю в любом случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2013, 19:37 |
|
Доступ к объектам в БД из метода класса
|
|||
---|---|---|---|
#18+
krvsa, а что не так со сменой области? Пример можешь привести? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2013, 11:32 |
|
Доступ к объектам в БД из метода класса
|
|||
---|---|---|---|
#18+
Alexey Maslovа что не так со сменой области? Пример можешь привести?Уже было: 15206965 , 15207055 и остановились на 15208246 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2013, 11:44 |
|
Доступ к объектам в БД из метода класса
|
|||
---|---|---|---|
#18+
Alexey Maslovа что не так со сменой области? Там сама переменная-то ньюшилась... А объект так и оставался "открытым"... Alexey MaslovПример можешь привести? Да тут на форуме все и приводил... Там идейка-то такая была... Будучи в одной области, для неких элементов брались характеристики из классов другой области и записывались в глобал или просто переменные (не скть важно)... Так вот считывание происходило именно в процедурке и без кила. Алгоритм примерно такой был: - перешел в область - открыл объект - что-то там сделал - вернулся в начальную область ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2013, 11:53 |
|
|
start [/forum/topic.php?fid=39&msg=38505183&tid=1556992]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 254ms |
total: | 416ms |
0 / 0 |