title: phxsoftware System.Data.SQLite DbDataReader misbehaving
body: <p>The following post relates to the System.Data.SQLite data provider by phxsoftware (<a href="http://sqlite.phxsoftware.com" rel="nofollow noreferrer">http://sqlite.phxsoftware.com</a>)</p>
  
  <p>I have a question (and possibly a problem) with DbDataReader’s Read method and/or Visual Studio 2008.  In many examples I see things like the following (and I know this code doesn't make a lot of sense ... but it serves a purpose):</p>
  
  <pre><code>DbDataReader reader = null;
  Long ltemp = 0;
  lock (m_ClassLock)
  {
     DbCommand cmd = dbCnn.CreateCommand();
     cmd.CommandText = “SELECT col1 FROM table1”;
     reader = cmd.ExecuteReader();
  
     if (null != reader)
     {
        while (reader.Read())
        {
           ltemp += (long)reader[0];
        }
     }
  reader.Close();
  </code></pre>
  
  <p>First question - What I dont understand from this example is am I missing data the first time through the while loop by calling reader.Read() upfront?  For instance, if the reader has values (3,5,7,9) the returned reader from cmd.ExecuteReader() should be pointing at 3 initially, correct?  reader.Read() would then move to 5, 7, and 9 on subsequent invocations within the while loop.  But, because reader.Read() is invoked before the first "ltemp += ..." line am I skipping past the first result (3)?</p>
  
  <p>Second question - (and I'm starting to think this might be a bug in VS) If I step through this set of code in the debugger when I stop at a breakpoint on the "if (null != ..." line I can clearly see mu mousing over and drilling down in the popup that reader has multiple row data values assigned to it.  However, if I close that popup information, and then try to bring it back up, when I drill down I now see the line "Enumeration yielded no results" where there was clearly data before.</p>
  
  <p>Can anyone explain this behavior?</p>