从课堂上获取价值

时间:2016-07-22 08:44:56

标签: c# mysql sql select connect

所以我有一个类Take用于连接 mysql 。在那个类中,我有一个方法来调用查询从mysql表中获取最后一条记录。

    public void Balance()
    {
        string query = "SELECT balance FROM history ORDER BY id DESC LIMIT 1 ";
        if (this.OpenConnection() == true)
        {
            MySqlCommand cmd = new MySqlCommand(query, connection);
            cmd.ExecuteNonQuery();
        }          
    }

在主要表单中,我调用该类和该方法

    take.Balance(); 

我知道,从上面的代码来看,我没有得到NULL的任何价值,所以我问我如何从该查询获取价值并将其放入TextBox in主要形式?

3 个答案:

答案 0 :(得分:4)

就个人而言,我认为你应该提高你的编程基础知识。您的示例代码中存在两个大问题:

  1. 你想得到这个值,但是你的函数是无效的,甚至没有返回任何东西,甚至将值设置为某个变量
  2. ExecuteNonQuery不是你的情况。
  3. 例如:

     public string Balance()
        {
            string query = "SELECT balance FROM history ORDER BY id DESC LIMIT 1 ";
            if (this.OpenConnection() == true)
            {
                MySqlCommand cmd = new MySqlCommand(query, connection);
                return cmd.ExecuteScalar();
            }          
        }
    

答案 1 :(得分:2)

我们来看看:

// You probably want to return value: decimal, not void
public decimal Balance() {
  // Make sql readable
  string query = 
    @"SELECT balance 
        FROM history 
    ORDER BY id DESC 
       LIMIT 1 ";

  // do not cache connection, but create a new one instead 
  using (MySqlConnection conn = new MySqlConnection(connectionStringHere)) {
    conn.Open();

    // wrap IDisposable into using  
    using (MySqlCommand cmd = new MySqlCommand(query, conn)) {
      // you want to return values: ExecuteReader (or ExecuteScalar) 
      // instead of ExecuteNonQuery
      using (var reader = cmd.ExecuteReader()) {
        if (reader.Read())
          return Convert.ToDecimal(reader.GetValue(0));
        else
          return 0m; // cursor is empty, let's return 0   
      }
    }          
  }
} 

答案 2 :(得分:0)

有两件事需要考虑。首先是查询

"SELECT balance FROM history ORDER BY id DESC LIMIT 1"

是一个查询,在某种意义上应该返回数据库中的一些有用数据,不应该使用方法ExecuteNonQuery来执行,该方法旨在返回受非查询影响的行数声明。其次,Balance的返回类型必须更改为void以外的其他类型,比如说int或类似的东西,这些类型必须返回给调用者。