SQL DataReader в IronPython

Пожалуйста, помогите мне прочитать только одну запись из таблицы MS SQL.
Я попытался сделать это следующим образом (IronPython 2.6 RC1):

cmd = SqlCommand("SELECT * FROM myTable", cn)  
dr = cmd.ExecuteReader()

После этого у меня есть ВСЕ таблицы в др! Но нужна только ОДНА запись (точнее: читать записи таблицы одну за другой)
...
Извините!
Я был неправ!
Я забыл о двух других командах в моей программе:
table = []
для строки в dr: table.append (row)
Так что это оказалось эквивалентом dr.Read ()! ...

19.10.2009 05:01:19
Но как я могу прочитать все мои записи таблицы по одной (в цикле)? (Таблица очень большая и не хватает оперативной памяти для всей таблицы)
Vladimir Aks 19.10.2009 05:30:46
1 ОТВЕТ

Используйте TOP, чтобы ограничиться одной (случайной) записью.

cmd = SqlCommand("SELECT TOP 1 * FROM myTable", cn)
dr=cmd.ExecuteReader()

Обычно, хотя, когда кто-то заинтересован в записи, заинтересован в конкретной записи, как, например, одна запись с ID = 42.

TOP 1 вернет первую запись в том порядке, в котором движок выберет доступ к таблице.

1
19.10.2009 05:15:59
Но как я могу прочитать все мои записи таблицы по одной (в цикле)? (Таблица очень большая и не хватает оперативной памяти для всей таблицы)
Vladimir Aks 19.10.2009 05:31:54
Почему вы их читаете? Я имею в виду, что ты делаешь со всеми этими записями, которые читаешь? SqlDataReader, возвращаемый ExecuteReader, не читает все записи, он читает по одной записи за раз, и вы можете циклически просматривать все записи, вызывая SqlDataReader.Read (), пока все записи не будут прочитаны, обрабатывая только одну запись за раз.
Remus Rusanu 19.10.2009 05:56:36
«SqlDataReader, возвращенный ExecuteReader, не читает все записи» - конечно! Когда SqlDataReader используется в C #, приведенный выше оператор является правильным, и SqlDataReader.Read () необходим для циклического перемещения по таблице. Но когда я попытался использовать SQLReader в IronPython, я обнаружил, что после выполнения dr = cmd.ExecuteReader () у меня есть все таблицы в dr !!! Это странно для меня, может быть, это из-за того, что я niewbie для IronPython?
Vladimir Aks 19.10.2009 06:12:17
используйте вышеупомянутое решение, просто добавив поле orderby, которое является уникальным, чтобы вы могли получать одну уникальную запись за один раз, упорядоченную по вашему желанию, надеюсь, это решит вашу проблему .. :)
Mahesh Velaga 19.10.2009 06:46:12