1

我是网络开发的初学者。我写了一个代码来在文本框中输入序列号。

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 语句”?

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

4

3 回答 3

1

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

于 2013-02-11T05:48:52.183 回答
0

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

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

于 2013-02-11T05:43:12.757 回答
0

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

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

object result = myOdbcCommand.ExecuteScalar();

SlnoTxt.Text = result.ToString();
于 2013-02-11T05:44:44.993 回答