-1
我一直在試圖執行一個SQL查詢並返回結果讀取器,但它不像我認爲的那樣行事。爲什麼Executereader在while(reader.Read())塊之後顯示空行?
private SQLiteDataReader genRandom()
{
string generate = "SELECT * FROM Questions";
SQLiteConnection conn = dbConnectTest();
conn.Open();
SQLiteCommand Command = new SQLiteCommand(generate, conn);
SQLiteDataReader dreader = Command.ExecuteReader();
genMarks=0;
if (dreader.HasRows)
{ //This if-block returns 'YES' message
if (dreader.HasRows)
MessageBox.Show("YES");
else
MessageBox.Show("NO");
while (dreader.Read())
{
genMarks += dreader.GetInt32(3);
}
//But this if-block returns 'NO'
if (dreader.HasRows)
MessageBox.Show("YES");
else
MessageBox.Show("NO");
}
else
{
MessageBox.Show("No rows Found");
}
return dreader;
conn.Close();
}
在執行while-block之後,'dreader'變空了。我在這裏做錯了什麼?
'雖然(reader.read())'已經讀過所有行。這是正常的。 – Berkay
爲什麼不把結果賦給數據表例如: 'var dt = new DataTable();'然後'dt.Load(command.ExecuteReader()'在你的方法中改變簽名來返回DataTable也改變你的' Command'給像'cmd'這樣的變量不使用保留字作爲變量名 – MethodMan
我完全意識到這一點,謝謝!這樣做更有意義! 您應該發佈這個答案。 – Sanju