Вывести одно поле одной записи из базы данных SQL в ASP.NET

2

Мне нужно прочитать одну запись из базы данных (определяемую приложением запроса URL) и взять из нее одно поле ( "Стоимость" ). SQL в настоящее время в моем источнике данных для него просто:

SELECT [Cost] from [Cars] WHERE ([RegistrationNumber] = @RegistrationNumber)

... then @RegistrationNumber определяется как исходящий из QueryString.

Я все еще изучаю ASP.NET, поэтому, вероятно, я надеюсь, что есть очень простой способ сделать это. Я мог бы использовать ListView или что-то в этом роде, но я думаю, что немного переборщил только за одну часть данных.

Кроме того, я работаю на С#, если это имеет значение.

Теги:
database

2 ответа

3
Лучший ответ

Предполагая, что вы используете объект SqlCommand для выполнения своего sql, вы можете использовать ExecuteScalar(), и он вернет первое значение из первой строки, которая возвращается из команды.

На странице документации, которую я связал, есть пример, но для краткости я включу его здесь:

using (SqlConnection conn = new SqlConnection(connString))
    {
        SqlCommand cmd = new SqlCommand(sql, conn);
        cmd.Parameters.Add("@RegistrationNumber", SqlDbType.VarChar);
        cmd.Parameters["@RegistrationNumber"].Value = ** your variable here**;
        try
        {
            conn.Open();
            double cost = (double)cmd.ExecuteScalar();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }

Это "сырой" метод запуска вашего SQL. Поскольку вы используете SqlDataSource, то, что он делает за кулисами, за исключением того, что не использует ExecuteScalar(), он просто получает все данные. Вы можете выбрать отдельные поля, используя следующий код:

protected void Page_Load(object sender, EventArgs e)
{

    DataView dv= (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
    foreach (DataRowView dr in dv)
    {
        Label1.Text = dr["Cost"].ToString();
    }
}

Это присвоит значение поля Label1. Если вы не хотите писать какой-либо код, может быть проще просто привязать его к простому элементу управления Repeater.

  • 0
    Я не сделал ничего связанного с SQL в C # - это просто SqlDataSource в моем файле .aspx.
  • 0
    Ах я вижу. Ну, вы можете использовать Repeater или ListView с простым шаблоном, или вы можете запустить код в подпрограмме page_load, чтобы просто выбрать значение из источника данных и назначить его элементу управления меткой. Я добавлю немного кода для этого.
Показать ещё 2 комментария
0

Я верю, что вы после этого команда SQLCommand ExecuteScalar.

Итак, вы бы использовали его как это (Отказ от ответственности: я не очень много делаю в С# с базами данных sql)

Int32 Cost = 0;
SQLCommand sqlcmd = New SQLCommand(SELECT [Cost] from [Cars] WHERE ([RegistrationNumber] = @RegistrationNumber), connection);
sqlcmd.Parameters.Add("@RegistrationNumber", SqlDbType.VarChar).Value = RegNumber;
        try
    {
        conn.Open();
        Cost = (Int32)sqlcmd.ExecuteScalar();
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }

Это должно с надеждой работать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню