在c#中使用while循环读取()

时间:2013-02-11 05:38:10

标签: c# oracle

我是网络开发的初学者。 我已经编写了一个代码,用于输入序列号到文本框中。

OdbcConnection myOdbcConnection = new OdbcConnection(con1);

OdbcCommand myOdbcCommand = myOdbcConnection.CreateCommand();
String sSQL = "SELECT max(slno)+1 FROM driversmaster";

myOdbcCommand.CommandText = sSQL;

myOdbcConnection.Open();

OdbcDataReader myOdbcDataReader = myOdbcCommand.ExecuteReader();

while (myOdbcDataReader.Read() != false)
{
    SlnoTxt.Text = myOdbcDataReader[0].ToString().Trim() ;
}
经过艰苦的挣扎,我得到了我需要的东西。但是我不明白我写的代码是什么让我得到答案。为什么我应该使用while循环进行读取,当我可以使用“if statement”时?

请帮助我知道,以便我能很好地理解代码。 提前致谢。

3 个答案:

答案 0 :(得分:1)

myOdbcCommand.ExecuteReader();的结果将在数据库中。考虑结果在查询结果后有10行。 myOdbcDataReader.Read()一次只能读取一条记录。因此,您需要将此Read()语句放在循环中以读取所有记录。读取一条记录后,指针将自动指向数据库中的下一条记录。如果您使用的是if,它会检查查询返回的天气是否有任何结果。这是在执行查询后至少存在一条记录。
在您的情况下,我建议使用
int value=(int)myOdbcCommand.ExecuteScalar();
因为只检索到一个整数值。 / p>

答案 1 :(得分:0)

使用阅读时,您可以处理从查询中获得的所有结果。如果你使用if语句,你将获得第一个结果(如果有的话)并完成。

所以简而言之:只要您只期望一个或没有结果,您就可以使用if。

答案 2 :(得分:0)

在您的情况下,if语句可以正常工作,因为您只查询一行数据。通常在查询数据库数据时,查询可能会返回多行,在这种情况下,您可以使用Read()一次一个地前进每行。

在您的情况下,由于您只检索单个值,因此您可能还需要考虑使用ExecuteScalar()

object result = myOdbcCommand.ExecuteScalar();

SlnoTxt.Text = result.ToString();