C # SQL SUM значение для метки - PullRequest
1 голос
/ 12 февраля 2011

В настоящее время у меня есть DataGridView, который отображает все элементы. Я хотел бы суммировать все цены в столбце цен, а затем отразить сумму в метке «TotalValueLabel». Что не так с моим утверждением?

        string query = "SELECT SUM (Price) FROM Bill";
        OleDbDataAdapter dAdapter = new OleDbDataAdapter(query, DBconn);
        DataTable source = new DataTable();
        dAdapter.Fill(source);
        TotalValueLabel.Text = source.ToString();

Ответы [ 2 ]

3 голосов
/ 12 февраля 2011

Ваш источник - DataTable, поэтому "source.ToString()" не даст вам ваш результат,

Попробуйте "source.Rows[0][0].ToString();".

Объект DataTable содержит список объектов DataRow, которые содержатзначения для каждой строки вашего запроса.

В вашем случае, однако, вам это может не понадобиться.Если вы ищете одно значение, вы должны использовать IDbCommand и вызывать ExecuteScalar().Это вернет первое значение первой строки ваших результатов.

Также попробуйте вызвать Dispose() для объектов, которые реализуют IDisposable (как dbadapter, команда, соединение).

string query = "SELECT SUM (Price) FROM Bill";
using (System.Data.IDbCommand command = new System.Data.OleDb.OleDbCommand(query, DBconn))
{
   object result = command.ExecuteScalar();
   TotalValueLabel.Text = Convert.ToString(result);
}
2 голосов
/ 12 февраля 2011

DataTable является избыточным для извлечения одного значения, кроме того, что вы даже не обращаетесь к значению правильно, лучше использовать скаляр выполнения:

var query = "SELECT SUM (Price) FROM Bill";
using (var cmd = new OleDbCommand(query, DBcon))
{
    TotalValueLabel.Text = cmd.ExecuteScalar().ToString();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...