2011-06-01 61 views
0

我有一个问题是从MySQL使用C#获取值。连接字符串是正确的,但它引发以下错误:无效的尝试调用读前访问一个字段()C#ASP.NET简单选择问题

谁能告诉我发生在下面的代码

  string strConnection = ConfigurationSettings.AppSettings["ConnectionString"]; 
      MySqlConnection connection = new MySqlConnection(strConnection); 
      MySqlCommand command = connection.CreateCommand(); 
      MySqlDataReader reader; 
      command.CommandText = "SELECT application_domain_name FROM `test`.`application_domains` WHERE idapplication_domains = " + reference; 
      connection.Open(); 
      reader = command.ExecuteReader(); 

      lblApplicationDomain.Text = reader.GetString(0); 

      connection.Close(); 
+2

参见:[一个妈妈的漏洞(http://xkcd.com/327/) – 2011-06-01 18:46:32

回答

2

问题必须调用reader.Read()访问结果之前。 在这之前,阅读器'光标'将放置在第一个元素之前。即使结果集为空,将光标放在第一个元素之前也会使行为保持一致。

0

您需要至少拨打reader.Read()一次。像正常SqlDataReader的,该图案是像这样:

while(reader.Read()) 
{ 
    .. Do Stuff 
} 

while(sqlDataReader.MoveNext()) 
{ 
    .. Do Stuff 
}