次のポストはphxsoftware(http://sqlite.phxsoftware.com)によるSystem.Data.SQLiteデータプロバイダに関係phxsoftware System.Data.SQLite DbDataReaderのDbDataReaderののReadメソッドで私が質問(そしておそらく問題を)持っている
を不正な動作および/または私は、次のようなものを参照してください(と私は、このコードは、多くの意味がありません...しかし、それは目的を果たし知っている)多くの例でのVisual Studio 2008:
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();
最初の質問 - 私はいけない何この例から理解しているのは、最初にreadループ()を呼び出してwhileループを介してデータが欠落していますか?たとえば、リーダーに値(3,5,7,9)がある場合、cmd.ExecuteReader()の返されたリーダーは最初は3を指していなければなりません。その後、read()はwhileループ内の次の呼び出しで5,7、および9に移動します。しかし、最初の "ltemp + = ..."行の前にreader.Read()が呼び出されるので、最初の結果(3)をスキップしていますか?
2番目の質問 - (これはVSのバグかもしれないと思っています)私がブレークポイントで "if(null!= .. "私がはっきりとわかるように、ポップアップで複数の行データ値が割り当てられていますが、そのポップアップ情報を閉じると、それを元に戻してみると、私がドリルダウンすると今ラインのデータが以前に明らかに存在した「列挙は何の結果が得られません」。
誰もが、この動作を説明することはできますか?
あなたはこのリーダーアクションをロックするのはなぜ?sqliteは、データの同時選択に対処することができます。更新/削除しますまた、挿入はできませんが、同時に選択することはできません。 – tuinstoel