<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=362285&amp;view=findpost&amp;p=3186306</guid>
        <pubDate>Thu, 09 Aug 2012 00:43:16 +0000</pubDate>
        <title>Последовательно выводить строку за строкой из определенной таблицы</title>
        <link>https://forum.sources.ru/index.php?showtopic=362285&amp;view=findpost&amp;p=3186306</link>
        <description><![CDATA[Алексей_Л: Как же вас занесло в раздел про C++? Для .Net есть отдельная ветка.<br>Кстати почитайте про Linq.<br>И поправьте разметку сообщения.<br>И цикл у вас бесконечный, упадёт на переполнении nomer_sdelki.<br>И мне кажется куда логичней сделать 1 запрос к БД со всеми интересующими номерами (BETWEEN).]]></description>
        <author>Алексей_Л</author>
        <category>C/C++: Базы данных</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=362285&amp;view=findpost&amp;p=3185729</guid>
        <pubDate>Wed, 08 Aug 2012 07:18:18 +0000</pubDate>
        <title>Последовательно выводить строку за строкой из определенной таблицы</title>
        <link>https://forum.sources.ru/index.php?showtopic=362285&amp;view=findpost&amp;p=3185729</link>
        <description><![CDATA[nebo-nw: Друзья, здравствуйте&#33; <br>
<br>
Пишу программу на C#. Задача заключается в том, чтобы из access таблицы последовательно выводить строку за строкой из определенной таблицы. <br>
<br>
n1<br>
n2<br>
n3<br>
...<br>
<br>
и т.д. <br>
<br>
большим специалистом не являюсь. нашел код и адаптировал под свои цели. проблема заключается в том, что применяемый алгоритм, в каждом цикле ищет строку по ID методом сравнения от начала таблицы. <br>
<br>
все бы хорошо, да в базе данных порядка 100 000 строк и на считывание их таким алгоритмом уходит более 12 часов. <br>
<br>
я бы хотел чтобы алгоритм запоминал местоположение последнесчитываемой строки и начинал чтение в новом цикле с последнего места, а не искал все заново. <br>
<br>
короче говоря, хочу понять как обратиться в таблице и считать конкрутную строку и столбец. скажем 3 строку и 4 столбец. <br>
<br>
вот код который у меня реализован сейчас:<br>
<br>
[CSHARP]using System;<br>
using System.Collections.Generic;<br>
using System.Linq;<br>
using System.Text;<br>
using System.Data.OleDb;<br>
<br>
namespace ODBC<br>
{<br>
  class Program<br>
  {<br>
    static void Main(string[] args)<br>
    {<br>
<br>
      TimeSpan Point1, Point2, Point3, Point4, Point5; // объявляем переменные для хранения времени, это точки измерения скорости обработки данных нашим ботом<br>
      Point1 = DateTime.Now.TimeOfDay; // засикаем время начала работы робота<br>
     <br>
      string x = &quot;WHERE Index = &quot;; // данная переменная хранит част SQL запроса в базу Access<br>
      int nomer_sdelki = 1024111; // вводим начальное значение индексатора в таблце (точка отправки вывода)<br>
      string filter; // переменная хранит объединенную часть команды из x и nomer_sdelki<br>
      string a, b, c; // переменные для хранения считываемых данных<br>
<br>
      OleDbDataReader myOleDbDataReader; // создаем объект OleDbDataReader<br>
                <br>
<br>
      // Формируем строку с параметрами подключения к файлу базы данных<br>
<br>
      string connectionString =<br>
      &quot;provider=Microsoft.Jet.OLEDB.4.0;&quot; +<br>
      &quot;data source=E:&#092;&#092;VisualStudio8.0&#092;&#092;ODBC&#092;&#092;QUOTE.mdb&quot;;<br>
<br>
      // создаем объект OleDbConnection для соединения с Бд и передаем его конструктору строку с параметрами подключения<br>
      OleDbConnection myOleDbConnection = new OleDbConnection(connectionString);<br>
<br>
      // создаем объект OleDbCommand<br>
      OleDbCommand myOleDbCommand = myOleDbConnection.CreateCommand();<br>
      <br>
     <br>
      // открываем соединение с БД с помощью метода Open() объекта OleDbConnection<br>
      myOleDbConnection.Open();<br>
       <br>
<br>
      // организуем цикл считывания данных из базы access<br>
      while (nomer_sdelki &#33;= 0)<br>
        {<br>
<br>
          Point4 = DateTime.Now.TimeOfDay; // засекаем время на считывание одной строки<br>
       <br>
          filter = x + nomer_sdelki.ToString(); // создаем часть запроса на поиск индексируемой строки<br>
<br>
          // задаем SQL-запрос к базе данных в свойстве CommandText объекта OleDbCommand<br>
          // Результатом запроса должны быть данные клинета с именем Кто-то<br>
<br>
          myOleDbCommand.CommandText =<br>
          &quot;SELECT Nomer, Vrema, Cena &quot; +   // сюда прописываем название столбцов в таблице базы данных(обращаем внимание на пробелы)<br>
          &quot;FROM RIU2 &quot; +         // сюда прописываем название таблицы в базе данных<br>
          filter;    // сюда прописывается сортируемое слово<br>
<br>
         <br>
          // присваиваем объекту OleDbDataReader и вызываем метод ExecuteReader() для выполнения введенного SQL-запроса<br>
<br>
          myOleDbDataReader = myOleDbCommand.ExecuteReader();<br>
<br>
          // Читаем строку ответа базы данных с помощью метода Read() объекта OleDbDataReader<br>
          myOleDbDataReader.Read();<br>
     <br>
<br>
          // отображаем результат запроса<br>
          // с проверкой на наличие в таблице данных по номеру индекса<br>
<br>
          if (myOleDbDataReader.HasRows &#33;= false)<br>
          {<br>
<br>
            Point2 = DateTime.Now.TimeOfDay; // фиксируем время прохождения<br>
            Point3 = Point2 - Point1; // рассчитываем общее время работы робота<br>
            Point5 = Point2 - Point4; // рассчитываем время на чтение одной строки<br>
           <br>
            Console.WriteLine(myOleDbDataReader[&quot;Nomer&quot;] // воводим данные из ячейки в столбце ...<br>
              + &quot; &quot; + myOleDbDataReader[&quot;Vrema&quot;] // воводим данные из ячейки в столбце ...<br>
              + &quot; &quot; + myOleDbDataReader[&quot;Cena&quot;] // воводим данные из ячейки в столбце ...<br>
              + &quot; &quot; + Point3 + &quot; &quot; + Point5); // воводим время<br>
<br>
            // записываем результаты в переменные.<br>
            // эти данные служат для вывода в бот.<br>
            // точка подключения торгового ядра<br>
<br>
            a = myOleDbDataReader[&quot;Nomer&quot;].ToString();<br>
            b = myOleDbDataReader[&quot;Vrema&quot;].ToString();<br>
            c = myOleDbDataReader[&quot;Cena&quot;].ToString();<br>
<br>
          }<br>
     <br>
          nomer_sdelki++; // увеличиваем значение индексируемого столбца на +1<br>
<br>
       <br>
          // закрываем OleDbDataReader методом Close()<br>
          myOleDbDataReader.Close();<br>
<br>
        }<br>
<br>
<br>
<br>
        // работа по чтению данных закончена, закрываем соединение с БД<br>
        myOleDbConnection.Close();<br>
<br>
    }<br>
  }<br>
}[/CSHARP][/QUOTE]]]></description>
        <author>nebo-nw</author>
        <category>C/C++: Базы данных</category>
      </item>
	
      </channel>
      </rss>
	