看这个:
myReader = cmd.ExecuteReader();
if (myReader.HasRows)
{
while (myReader.Read())
{
info = myReader.GetString("info");
...
}
}
.....
嗯,我不知道为什么,但是当我编译它并在另一台电脑上使用它时,它会爆炸,因为while。但如果我这样做:
myReader = cmd.ExecuteReader();
if (myReader.HasRows)
{
if (myReader.Read()) <------------------- NOTICE THE IF
{
info = myReader.GetString("info");
...
}
}
.....
... 将工作。请注意,我知道我将会有只有一个元素每次都是因为程序的逻辑。
这样做可以吗?它看起来很可怕,也许不是一个好的做法(?)。我正在询问你的方向。
EDIT:
将发布更多代码,因为可以帮助查找我的错误:
while (myReader.Read())
{
info = myReader.GetString("info");
...
/**
* Write the relevant info in the LOGS
*/
connection.Close(); <---------- :S
connection.Open(); <---------- if I don´t do this I got some problems with the connection!!!!
string queryLog = "INSERT INTO ....;
MySqlCommand cmdLog = new MySqlCommand(queryLog, connection);
cmdLog.ExecuteNonQuery();
}
每当我期待的时候我都会这样做one row,没有什么问题。
如果我期望单个值,我使用ExecuteScalar
反而。这将简单地返回返回结果集第一行第一列中保存的值,通常该集合只有一列和一行,因此您往往不会注意到这一点。
我也倾向于不去打扰if (myReader.HasRows)
as if (myReader.Read())
涵盖了这一点。
我不知道为什么while
导致你出现问题...我只是提供我对使用的意见if
超过while
如果您不希望出现多行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)