аналог Recordset.RecordCount в NET
От: Alexander_fx  
Дата: 10.05.04 20:51
Оценка:
Всем привет.
Перхожу помаленьку с VB6 на VBV.NET
Не могу найти свойство которое отвечает за кол-во записей в возвращаемом наборе.

        Dim rs As System.Data.SqlClient.SqlDataReader
        Con.Open()
        sql_cmd.CommandText = "select * from account_value order by id"
        rs = sql_cmd.ExecuteReader
        Dim x1(100000) As Double ' а хочется создать массив под точное кол-во данных в рекордсете
        While rs.Read
            x1(aa) = CDbl(rs(0))
        End While
Re: аналог Recordset.RecordCount в NET
От: Аноним  
Дата: 10.05.04 21:38
Оценка:
Здравствуйте, Alexander_fx, Вы писали:

A_>Всем привет.

A_>Перхожу помаленьку с VB6 на VBV.NET
A_>Не могу найти свойство которое отвечает за кол-во записей в возвращаемом наборе.

A_>
A_>        Dim rs As System.Data.SqlClient.SqlDataReader
A_>        Con.Open()
A_>        sql_cmd.CommandText = "select * from account_value order by id"
A_>        rs = sql_cmd.ExecuteReader
A_>        Dim x1(100000) As Double ' а хочется создать массив под точное кол-во данных в рекордсете
A_>        While rs.Read
A_>            x1(aa) = CDbl(rs(0))
A_>        End While
A_>


Используй DataAdapter, методом Fill суешь данные в DataSet.
Потом смотри DataTable.Rows.Count

Я VB не знаю, на шарпе: вот так может быть подойдет...

OleDbCommand myAccessCommand = new OleDbCommand(strAccessSelect,myAccessConn);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);

myAccessConn.Open();
myDataAdapter.Fill(myDataSet,"Categories");
DataTableCollection dta = myDataSet.Tables;
foreach (DataTable dt in dta)
{
dt.Rows.Count // вот это должно быть твое счастье
// ...
}

ЗЫ вместо Oledb может быть и SQL Data Provider
Re: аналог Recordset.RecordCount в NET
От: devilmax  
Дата: 10.05.04 21:40
Оценка:
никакой я не аноним
Re[2]: аналог Recordset.RecordCount в NET
От: Alexander_fx  
Дата: 10.05.04 22:13
Оценка:
Здравствуйте, devilmax, Вы писали:

D>никакой я не аноним


Спасибо за ответ.
Re[3]: Блин но не все так просто, новые требования
От: Alexander_fx  
Дата: 10.05.04 22:43
Оценка:
У меня база 5 гигов.
Таблицы содержат по 10 000 000 записей.
Я делаю выборки по 50 --- 150 000 записей.
И делать копию таблици для того чтобы узнать сколько в выборке записей выглядит некрасиво.

Давайте я сформулирую задачу заново.

В базе есть таблица с 10 000 000 записями.
Есть запрос на выборку который возвращает 50 000 — 150 000 записей.
Мне нужно заполнить несколько одномерных массивов данными из этой таблицы.

Я делал так. Определял сколько возвратилось записей. Создавал массивы.( по размеру выборки) Заливал их ( с выводом прогрессбара опять таки по размеру выборки)

Теперь не знаю как мне быть в NET
Re[4]: Блин но не все так просто, новые требования
От: fist Россия  
Дата: 10.05.04 23:43
Оценка:
Здравствуйте, Alexander_fx, Вы писали:

[]

В DataReader нельзя получить количество записей.
Более удобный вариант — сделать запрос на количесво записей, а потом послать запрос уже на записи.
Re[4]: Блин но не все так просто, новые требования
От: Аноним  
Дата: 10.05.04 23:45
Оценка:
Здравствуйте, Alexander_fx, Вы писали:

A_>У меня база 5 гигов.

A_>Таблицы содержат по 10 000 000 записей.
A_>Я делаю выборки по 50 --- 150 000 записей.
A_>И делать копию таблици для того чтобы узнать сколько в выборке записей выглядит некрасиво.

A_>Давайте я сформулирую задачу заново.


A_>В базе есть таблица с 10 000 000 записями.

A_>Есть запрос на выборку который возвращает 50 000 — 150 000 записей.
A_>Мне нужно заполнить несколько одномерных массивов данными из этой таблицы.

A_>Я делал так. Определял сколько возвратилось записей. Создавал массивы.( по размеру выборки) Заливал их ( с выводом прогрессбара опять таки по размеру выборки)


A_>Теперь не знаю как мне быть в NET


Есть еще вариант, можно использовать динамический массив.
Мне тут даже подсказали, что называется он ArrayList.
Там есть метод Add. Медленно быть вроде не должно, поскольку
проблем с распределением памяти в .Net пока не встречал.

Только вот с прогресс баром что делать, даже не знаю...
Надо MSDN поковырять может что-нибудь еще придумаю.

Кстати а зачем тебе эти массивы?
Ты ведь все равно данные копируешь в массив.
Используй DataTable вместо массива!
Или я еще чего-то не знаю?
Re[5]: Блин но не все так просто, новые требования
От: Аноним  
Дата: 10.05.04 23:52
Оценка:
Здравствуйте, fist, Вы писали:

F>Здравствуйте, Alexander_fx, Вы писали:


F>[]


F>В DataReader нельзя получить количество записей.

F>Более удобный вариант — сделать запрос на количесво записей, а потом послать запрос уже на записи.

Я правильно понимаю: сделать запрос на количесво записей, это речь о COUNT в Transact SQL?
Re[6]: Блин но не все так просто, новые требования
От: fist Россия  
Дата: 10.05.04 23:55
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Я правильно понимаю: сделать запрос на количесво записей, это речь о COUNT ?


Да
Re[5]: Угу, там заморочек выше крыши
От: Alexander_fx  
Дата: 11.05.04 00:05
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Alexander_fx, Вы писали:


A_>>У меня база 5 гигов.

A_>>Таблицы содержат по 10 000 000 записей.
A_>>Я делаю выборки по 50 --- 150 000 записей.
A_>>И делать копию таблици для того чтобы узнать сколько в выборке записей выглядит некрасиво.

A_>>Давайте я сформулирую задачу заново.


A_>>В базе есть таблица с 10 000 000 записями.

A_>>Есть запрос на выборку который возвращает 50 000 — 150 000 записей.
A_>>Мне нужно заполнить несколько одномерных массивов данными из этой таблицы.

A_>>Я делал так. Определял сколько возвратилось записей. Создавал массивы.( по размеру выборки) Заливал их ( с выводом прогрессбара опять таки по размеру выборки)


A_>>Теперь не знаю как мне быть в NET


А>Есть еще вариант, можно использовать динамический массив.

А>Мне тут даже подсказали, что называется он ArrayList.
А>Там есть метод Add. Медленно быть вроде не должно, поскольку
А>проблем с распределением памяти в .Net пока не встречал.

А>Только вот с прогресс баром что делать, даже не знаю...

А>Надо MSDN поковырять может что-нибудь еще придумаю.

А>Кстати а зачем тебе эти массивы?

А>Ты ведь все равно данные копируешь в массив.
А>Используй DataTable вместо массива!
А>Или я еще чего-то не знаю?

Угу, там заморочек выше крыши
Прога для обработки данных на бирже.
Считываются исторические данные, а потом в реалтайме к массиву доливаются данные.
Без массивов не обойдусь стопудово. Я даже коллекции не могу использовать из за их тормознутости ( 50 000 элементов)
Re[6]: Угу, там заморочек выше крыши
От: fist Россия  
Дата: 11.05.04 00:14
Оценка:
Здравствуйте, Alexander_fx, Вы писали:

A_>Считываются исторические данные, а потом в реалтайме к массиву доливаются данные.


А на уровне базы данных эти рассчеты нельзя реализовать?
Re[7]: Угу, там заморочек выше крыши
От: Alexander_fx  
Дата: 11.05.04 06:06
Оценка:
Здравствуйте, fist, Вы писали:

F>Здравствуйте, Alexander_fx, Вы писали:


A_>>Считываются исторические данные, а потом в реалтайме к массиву доливаются данные.


F>А на уровне базы данных эти рассчеты нельзя реализовать?


Нет одназначно.
Там простая выборка данных за период времени. А те данные что доливаем, так их просто нет на момент исполнения запроса.
Проше в массив добавлять элементы ( по 1-5 в секуду) чем с такой частотой делать обновление по базе)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.