|
|
|
select-ы внутри одной транзакции
|
|||
|---|---|---|---|
|
#18+
Привет. Делаю динамическую подгрузку данных в dataGridView как описано в msdn-е. Там данные подгружаются динамически, по мере скролла dataGridView. Мне необходимо сделать так, чтобы при открытии формы с этим dataGridView началась выполняться транзакция, т.е. данны ебы уже подгружались не из "чистой таблицы", а из какого-то кэша, т.е. если кто-то другой изменить данные во время моей работы с этой формой, у меня это никак не отображалось. Не могу ничего найти по поводу выборок внутри одной транзакции. Помогите кто знает. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2006, 12:40 |
|
||
|
select-ы внутри одной транзакции
|
|||
|---|---|---|---|
|
#18+
Немного не правильно сформулировал вопрос. Мне нужно читать из таблицы внутри одной транзакции. Пишу на C# под Oracle, пока не получается найти примеры реализации такой штуки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2006, 13:48 |
|
||
|
select-ы внутри одной транзакции
|
|||
|---|---|---|---|
|
#18+
Честно говоря, не очень понятна формулировка вопроса. Что касается Oracle, то 1. если нужно читать какое-то время состояние данных на определенный момент времени (возможно, из разных таблиц), можно поставить оператор Код: plaintext 1. 2. если нужно, чтобы никто не мог ИЗМЕНИТЬ данные некоторое время, можно использовать Код: plaintext 1. 2. Если случай 1 и удерживать надо значительное время, необходимо позаботиться о достаточном размере UNDO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2006, 14:11 |
|
||
|
select-ы внутри одной транзакции
|
|||
|---|---|---|---|
|
#18+
Мне нужно читать данные из базы внутри одной транзакции, т.е. если кто-то изменил записи в базе, то эти изменения меня бы не коснулись, а считались старые значения, т.е. значения, которые были на момент, когда я начал с ними работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2006, 14:16 |
|
||
|
select-ы внутри одной транзакции
|
|||
|---|---|---|---|
|
#18+
Да, наверно, 1-ый случай для меня. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2006, 14:18 |
|
||
|
select-ы внутри одной транзакции
|
|||
|---|---|---|---|
|
#18+
Вопрос, как реализовать это в ADO.NET остается открытым :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2006, 07:27 |
|
||
|
select-ы внутри одной транзакции
|
|||
|---|---|---|---|
|
#18+
Скажем есть вот такой код OracleConnection con1 = new OracleConnection(conStr) ; con1.Open(); OracleCommand cmd = new OracleCommand( "SET TRANSACTION READ ONLY", con1); cmd.ExecuteNonQuery(); cmd.CommandText = "select count(*) from table1"; MessageBox.Show(cmd.ExecuteScalar().ToString()); //Вот здесь, пока висит MessageBox, например, удаляем строки из //таблицы table1 cmd.CommandText = "select count(*) from table1"; MessageBox.Show(cmd.ExecuteScalar().ToString()); //Этот MessageBox показывает кол-во строк уменьшенное на число удаленных строк, т.е. данные читаются не из SnapShot-а. cmd.CommandText = "COMMIT"; cmd.ExecuteNonQuery(); con1.Close(); Подскажите, в чем я не прав? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2006, 10:38 |
|
||
|
select-ы внутри одной транзакции
|
|||
|---|---|---|---|
|
#18+
Сам с ADO не работал, но могу высказать след. соображения: 1. в самом Oracle (например, в SQL*Plus) это работает без проблем 2. можно, в крайнем случае, извратиться, создать временную таблицу (CREATE GLOBAL TEMPORARY TABLE), записывать выборку в нее, а затем считывать оттуда (это в случае, если ADO не создает каких-нибудь доп. сессий) 3. уже неоднократно говорилось, особенно на форуме Delphi, что ADO не поддерживает некоторые фичи Oracle и с ним лучше работать через другие вещи, например ODAC (сам пользовал) PS все это исходит из предположения, что в приведенном примере вот это //Вот здесь, пока висит MessageBox, например, удаляем строки из //таблицы table1 делалось в другой сессии... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2006, 15:17 |
|
||
|
|

start [/forum/topic.php?fid=17&msg=34041309&tid=1353111]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 370ms |

| 0 / 0 |
