2013-10-23 67 views
0

我试图从数据库中获取单个值,但该循环似乎根本不会启动?C#dataReader不能正常工作

if (connection.State == ConnectionState.Open) 
     { 
      MySqlDataReader dataReader = cmd.ExecuteReader(); 
      while (dataReader.Read()) 
      { 
       value = dataReader["amount"].ToString(); 
      } 
      dataReader.Close(); 
      connection.Close(); 
     } 

这些命令:

public string value; 
    public static string Konekcija = "Server=127.0.0.1; Database=CardIgrica; Uid=admin; Pwd=admin;"; 
    public string komanda = "SELECT amount FROM CardIgrica.creaures WHERE id = '1';"; 
    MySqlConnection connection = new MySqlConnection(Konekcija); 
MySqlCommand cmd = new MySqlCommand(komanda, connection); 
connection.Open(); 
+0

如果直接在数据库中运行查询,会发生什么情况? –

+0

不是你的数据库中的整数?现在你正在使用它作为varchar/nvarchar。 – Marcus

+0

代码是否进入while循环? – Hexie

回答

0

尝试一下本作的选择

public string value {get; set;} 
string komanda ="SELECT amount FROM CardIgrica.creaures WHERE id = 1"; 
0

首先打开你的SQL连接然后进行的MySqlCommand对象象下面这样:

MySqlConnection connection = new MySqlConnection(Konekcija); 

connection.Open(); 


MySqlCommand cmd = new MySqlCommand(komanda, connection); 
0

试试这个

using (SqlConnection conn = new SqlConnection(Konekcija)) 
    { 
     SqlCommand cmd = new SqlCommand(); 
     cmd.Connection = conn; 
     cmd.CommandType = CommandType.Text; 
     cmd.Parameters.Clear(); 
     cmd.CommandText = komanda ; 
     conn.Open(); 
     var dataReader= cmd.ExecuteReader(); 

     while (result.Read()) 
     { 
      value = dataReader["amount"].ToString(); 
     } 


     conn.Close(); 

    } 
0

如果你需要一个值,你可以使用cmd.ExecuteReader(); 因为ExecuteScalar()cmd.ExecuteScalar();反而会返回一个值。