Есть ли лучший способ прочитать одно значение XML из базы данных - PullRequest
0 голосов
/ 22 декабря 2009

В настоящее время я использую этот фрагмент кода для получения одного значения XML, которое будет возвращено из моего скалярного запроса.

using (SqlDataReader reader = sqlCommand.ExecuteReader())
{
    while (reader.Read())
    {
        SqlXml xml = reader.GetSqlXml(0);
        XmlSchema xmlSchema = XmlSchema.Read(xml.CreateReader(), validationEvent);
        break;
    }
}

Я бы предпочел использовать sqlCommand.ExecuteScalar(), но, похоже, это означает возвращение к XML в String, что мне кажется неправильным, поскольку мне не интересно иметь String.

Ответы [ 3 ]

1 голос
/ 22 декабря 2009

На самом деле, запустив ExecuteNonQuery, вы можете только вернуть int (возвращаемое значение хранимой процедуры). За исключением ExecuteScalar, у вас есть 2 варианта:

  1. ExecuteXmlReader

  2. Используйте выходной параметр (я бы предпочел использовать Scalar для этого)

1 голос
/ 22 декабря 2009
0 голосов
/ 22 декабря 2009

Из документации MSDN по SqlDbType.Xml

Значение XML. Получить XML как строка с использованием метода GetValue или Значение свойства или как XmlReader вызов метода CreateReader.

Таким образом, вы либо получите существующий код, либо получите XML-код, возвращенный в виде строки с ExecuteScalar, который необходимо проанализировать в объекте XML.

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