Re: Вернуть количество записей
От: lozzy  
Дата: 07.10.04 12:27
Оценка: +2
Здравствуйте, woto, Вы писали:

W>Здравствуйте.


W>Пожалуйста, подскажите каким образом можно вернуть количество возвращаемых записей после SELECT'a. В книге четко говорится, что вы не прочитаете значения переменных пока не выполните SqlDataReader.Close(), а мне надо создать массив чтобы заполнить его записями, но какой длиный я не знаю, замкнутый круг какой-то.


Используй динамические массивы. Массивы с фиксированной длинной — плохой тон.
Вернуть количество записей
От: woto Россия  
Дата: 07.10.04 10:00
Оценка:
Здравствуйте.

Пожалуйста, подскажите каким образом можно вернуть количество возвращаемых записей после SELECT'a. В книге четко говорится, что вы не прочитаете значения переменных пока не выполните SqlDataReader.Close(), а мне надо создать массив чтобы заполнить его записями, но какой длиный я не знаю, замкнутый круг какой-то.
... << RSDN@Home 1.1.4 beta 1 >>
Re: Вернуть количество записей
От: -arra- Россия  
Дата: 07.10.04 13:19
Оценка:
W>Пожалуйста, подскажите каким образом можно вернуть количество возвращаемых записей после SELECT'a. В книге четко говорится, что вы не прочитаете значения переменных пока не выполните SqlDataReader.Close(), а мне надо создать массив чтобы заполнить его записями, но какой длиный я не знаю, замкнутый круг какой-то.
выполнить два SELECT-а :
один SELECT count(*) from ...
из него узнать кол-во ожидаемых записей
второй — собственно возвращающий записи
а еще лучше использовать не массив а ArrayList какой-нить
Re[2]: Вернуть количество записей
От: woto Россия  
Дата: 07.10.04 13:31
Оценка:
Здравствуйте, -arra-, Вы писали:

A>выполнить два SELECT-а :

A>один SELECT count(*) from ...
A>из него узнать кол-во ожидаемых записей
A>второй — собственно возвращающий записи
A>а еще лучше использовать не массив а ArrayList какой-нить

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

А насчет первого решения я просто не знаю это скажется на производительности sql сервера? Т.е. произойдет выборка, подсчет строк, а потом опять выборка?
... << RSDN@Home 1.1.4 beta 1 >>
Re[3]: Вернуть количество записей
От: Arsu Россия  
Дата: 07.10.04 14:23
Оценка:
W>А насчет первого решения я просто не знаю это скажется на производительности sql сервера? Т.е. произойдет выборка, подсчет строк, а потом опять выборка?

Нормально скажется. Если у тебя ключ в таблице есть.
Если ключ есть, то запрос на кол-во строк не в таблице ищет, а по ключу — что гораздо быстрее.
Re[2]: Вернуть количество записей
От: lozzy  
Дата: 07.10.04 15:18
Оценка:
Здравствуйте, -arra-, Вы писали:

W>>Пожалуйста, подскажите каким образом можно вернуть количество возвращаемых записей после SELECT'a. В книге четко говорится, что вы не прочитаете значения переменных пока не выполните SqlDataReader.Close(), а мне надо создать массив чтобы заполнить его записями, но какой длиный я не знаю, замкнутый круг какой-то.

A>выполнить два SELECT-а :
A>один SELECT count(*) from ...
A>из него узнать кол-во ожидаемых записей

Это не правильно. Кол-во записей между этими выборкми может измениться. Либо надо выполнять эти два запроса с блокировкой — что тоже не фонтан.

A>второй — собственно возвращающий записи

A>а еще лучше использовать не массив а ArrayList какой-нить

Единственно верный вариант. Задумываться над правильным или неправильным использованием памяти в данном случае — нонсенс. Автору топика незнакомо слово BufferOverflow ?
Re[3]: Вернуть количество записей
От: Аноним  
Дата: 08.10.04 21:19
Оценка:
Здравствуйте, woto, Вы писали:

W>А насчет первого решения я просто не знаю это скажется на производительности sql сервера? Т.е. произойдет выборка, подсчет строк, а потом опять выборка?


Здорово скажется, если запрос посложнеее чем SELECT * FROM table, потому как сервер практически два раза выполнит запрос, точнее два совершенно разных запроса.
Re[3]: Вернуть количество записей
От: Альт Россия http://cryptocode.ru
Дата: 11.10.04 01:51
Оценка:
Здравствуйте, lozzy, Вы писали:

L>Это не правильно. Кол-во записей между этими выборкми может измениться. Либо надо выполнять эти два запроса с блокировкой — что тоже не фонтан.

И все же это правильный ответ

select
count(*) as counter
from
( select ...
from ...
where ... );
/

Если постановкой прописана логика работы клиента именно с зафиксированным набором данных на начало транзакции выручат snapshot или temporary table

Либо лочить блок данных

select ...
from ...
where ...
for update;

последнее. дурной стиль
... << RSDN@Home 1.1.3 stable >>
: 4000654
Re[4]: Вернуть количество записей
От: Merle Австрия http://rsdn.ru
Дата: 11.10.04 06:28
Оценка:
Здравствуйте, Альт, Вы писали:

А>И все же это правильный ответ

Вы бы хоть сначала выяснили что за сервер, а потом уже с блокировками и snapshot'ами разбирались...
Мы уже победили, просто это еще не так заметно...
Общий вопрос. Частные ответы.
От: Альт Россия http://cryptocode.ru
Дата: 11.10.04 06:49
Оценка:
Здравствуйте, Merle, Вы писали:

С каких пор описание чужой проблемы и ее окружения стала моей проблемой.
Я работаю с ораклом.

Ведь если подумать, то и на фразу:

>создать массив, чтобы заполнить его записями, но какой длиный я не знаю


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

M>Вы бы хоть сначала выяснили что за сервер, а потом уже с блокировками и snapshot'ами разбирались...
... << RSDN@Home 1.1.3 stable >>
: 4000654
Re: Общий вопрос. Частные ответы.
От: Merle Австрия http://rsdn.ru
Дата: 11.10.04 06:56
Оценка:
Здравствуйте, Альт, Вы писали:

А>С каких пор описание чужой проблемы и ее окружения стала моей проблемой.

С тех пор как ты начал пытаться решить чужую проблему...

А>Я работаю с ораклом.

У всех свои недостатки...

>>создать массив, чтобы заполнить его записями, но какой длиный я не знаю

А>Я могу ответить, что правильнее пользоваться динамическими массивами. Тогда, сколько бы не вернул сервер записей. Я всегда буду иметь возможность отфетчить их все.
Так вот это и было бы правильным ответом.
... [ RSDN@Home 1.1.4 revision 142 ]
Мы уже победили, просто это еще не так заметно...
Re[2]: Общий вопрос. Частные ответы.
От: Альт Россия http://cryptocode.ru
Дата: 11.10.04 07:06
Оценка:
Здравствуйте, Merle, Вы писали:

А>>С каких пор описание чужой проблемы и ее окружения стала моей проблемой.

M>С тех пор как ты начал пытаться решить чужую проблему...
В этом вопросе я был не прав. буду стараться.
... << RSDN@Home 1.1.3 stable >>
: 4000654
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.