2013-12-23 69 views
2

我有以下代码。获取查询的int值

string connStr = String.Format("server=localhost;user id=root; password=1234;" + "database=Printermangement; pooling=false", "localhost", "root", "1234"); 
string Query = "select sum(Page_Printed) from printjobdetails where User_ID = 'MyProperty'GROUP by User_ID"; 
MySqlConnection conDataBase = new MySqlConnection(connStr); 
MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase); 

MessageBox.Show(Query); 

我想从这个查询sum,但我无法弄清楚如何获得int值在消息框中显示。我怎样才能做到这一点?

+4

'MessageBox.Show(Query);'显示查询,而不是结果。 –

回答

9

可以使用ExecuteScalar方法:

// Prepare the command 
string connStr = ... 
string Query = "select sum(Page_Printed) from printjobdetails where User_ID = 'MyProperty' GROUP by User_ID"; 
using(MySqlConnection conDataBase = new MySqlConnection(connStr)) 
using(MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase)) 
{ 
    // Execute the command and get the result 
    var sum = (int)cmdDataBase.ExecuteScalar(); 

    // Display the result 
    MessageBox.Show(string.Format("Sum: {0}", sum)); 
} 

我也放置在using块的命令和连接对象。这将确保他们安全地关闭,并且他们使用的任何非托管资源将被正确处置。

1

本示例来自Jan Bodnar的this blog(非常有帮助),稍微编辑以使用ExecuteScalar()方法执行查询。

using System; 
using MySql.Data.MySqlClient; 

public class Example 
{ 

    static void Main() 
    { 
     string cs = @"server=localhost;userid=user12; 
      password=34klq*;database=mydb"; 

     MySqlConnection conn = null; 
     MySqlDataReader rdr = null; 

     try 
     { 
      conn = new MySqlConnection(cs); 
      conn.Open(); 

      string stm = "SELECT * FROM Authors"; 
      MySqlCommand cmd = new MySqlCommand(stm, conn); 

      int sum = (int)cmd.ExecuteScalar(); 
      Console.WriteLine(sum); 

     } catch (MySqlException ex) 
     { 
      Console.WriteLine("Error: {0}", ex.ToString()); 

     } finally 
     { 

      if (conn != null) 
      { 
       conn.Close(); 
      } 

     } 
    } 
} 
+1

为什么'ExecuteReader'? OP只需要一个值; 'executablecalar'是需要的。 – Rahul

+0

@Rahul是真正的固定代码示例。谢谢。 –