Возврат нескольких значений из sql в метку - PullRequest
2 голосов
/ 08 сентября 2011

У меня есть этикетка:

<asp:Label ID="lbl1" runat="server"></asp:Label>

Код:

protected void Page_Load(object sender, EventArgs e)
{
    lbl1.Text = ImageCheck().ToString();
}

И

protected int ImageCheck()
{
    SqlConnection connection = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\***.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
    string CommandText2 = "SELECT * FROM Machreta WHERE noImage = 1";
    SqlCommand command2 = new SqlCommand(CommandText2, connection);
    connection.Open();
    int check = (int)command2.ExecuteScalar();
    connection.Close();

    return check;
}

Как я могу вернуть несколько значений? Эта метка отображает только одно значение, но в таблице есть еще 6.

Ответы [ 2 ]

3 голосов
/ 08 сентября 2011

попробуйте это:

    protected string ImageCheck()
    {

      var result = new StringBuilder();

    using(var connection = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\***.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"))
    {
        string CommandText2 = "SELECT * FROM Machreta WHERE noImage = 1";
        SqlCommand command2 = new SqlCommand(CommandText2, connection);
        connection.Open();

      using(var reader = command2.ExecuteReader())
      {
        while (reader.Read())
        {
          result.Append(reader.GetString(0));
        }
      }

      return result.ToString();

    }
 }

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

2 голосов
/ 08 сентября 2011

Вот объяснение метода ExecuteScalar ().http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar%28v=vs.71%29.aspx

"Выполняет запрос и возвращает первый столбец первой строки в наборе результатов, возвращенных запросом. Дополнительные столбцы или строки игнорируются."

Также SELECT *будет получать все столбцы.Возможно, вы хотите отобразить несколько значений для одного столбца.Затем выберите имя столбца в операторе select.

SELECT xyzColumn FROM Machreta WHERE noImage = 1

Наконец, вы можете назначить только одну строку для label.text.Таким образом, вам придется объединить все эти строки (несколько значений для одного столбца), а затем назначить его тексту метки.Используйте метод чтения и метод ExecuteReader () вместо ExuecuteScalar ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...