Вывести одно поле одной записи из базы данных SQL в ASP.NET - PullRequest
2 голосов
/ 18 января 2010

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

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 18 января 2010

Если вы используете объект 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 голосов
/ 18 января 2010

Я полагаю, что вы ищете Команда SQLCommand ExecuteScalar .

Таким образом, вы могли бы использовать это так (Отказ от ответственности: я не особо много делаю в C # с базами данных 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);
    }

Надеюсь, это сработает.

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