我一直在尝试执行sql查询并返回结果阅读器,但它的表现不符合我的想法。
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();
}
' dreader'在执行while-block之后立即变为空。我在这里做错了什么?
答案 0 :(得分:2)
阅读完所有行后,开玩笑的读者都不会开玩笑。
读者正在做着应该做的事情。
这是一个消防水带。当数据结束时,它就不再在软管中了。
没有任何目的可以返回那个dreader,因为它是空的并且连接已关闭。
您可能想要返回
List<int>