Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Update для текстового поля, содержащего xml  [new]
Allaire
Member

Откуда: Киев
Сообщений: 70
Добрый день коллеги! Интересует следующее... столкнулся с проблемой невозможности обновления текстового поля, в которое записан xml. Сам файл такого содержания:
<?xml version="1.0" encoding="utf-8"?>
<ManagedExtension xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Name="SyntaxHighlighter">
  <AdminPage />
  <Author>&lt;a target="_new" href="http://dotnetblogengine.net/"&gt;BlogEngine.NET&lt;/a&gt;</Author>
  <Description>Adds &lt;a target="_new" href="http://alexgorbatchev.com/wiki/SyntaxHighlighter"&gt;Alex Gorbatchev's&lt;/a&gt; source code formatter</Description>
  <Enabled>true</Enabled>
  <Priority>0</Priority>
  <Settings>
<Delimiter>44</Delimiter>
    <Help />
    <Hidden>false</Hidden>
    <Index>1</Index>
    <IsScalar>true</IsScalar>
    <Name>Themes</Name>
    <Parameters>
      <KeyField>false</KeyField>
      <Label>Themes</Label>
      <MaxLength>20</MaxLength>
      <Name>SelectedTheme</Name>
      <ParamType>ListBox</ParamType>
      <Required>false</Required>
      <SelectedValue>Dark</SelectedValue>
      <Values>Default</Values>
      <Values>Django</Values>
      <Values>Eclipse</Values>
      <Values>Emacs</Values>
      <Values>FadeToGrey</Values>
      <Values>MDUltra</Values>
      <Values>Midnight</Values>
      <Values>Dark</Values>
    </Parameters>
    <ShowAdd>true</ShowAdd>
    <ShowDelete>true</ShowDelete>
    <ShowEdit>true</ShowEdit>
  </Settings>
  <ShowSettings>true</ShowSettings>
  <Version>2.5.1</Version>
</ManagedExtension>

Сам файл чуток урезан... но структура хорошо видна. В общем в "свернутом" виде этот xml тянет на 9к символов (как я уже говорил - тип поля: текст). Если попробовать апдейтнуть его через правку таблицы (не через запрос) - выдает ошибку, что такая последовательность не может быть записана и будет обрезана (причем не имеет значения зочу ли я апдейтнуть 1 символ или 10) - результат один. Честно говоря не совсем понятно как туда запихнули xml файл, но почему-то думаю что командой можно проапдейтить. Мне необходимо добавить 2 новых значения с тегом <Values></Values>. С xml раньше не работал - подскажите пожалуйста как все правильно сделать и почему невозможно проапдейтить поле через правку значений в таблице?
11 дек 12, 11:41    [13611342]     Ответить | Цитировать Сообщить модератору
 Re: Update для текстового поля, содержащего xml  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
Сервер то у вас какой? и описание поля таблицы было бы неплохо увидеть
11 дек 12, 11:44    [13611370]     Ответить | Цитировать Сообщить модератору
 Re: Update для текстового поля, содержащего xml  [new]
Allaire
Member

Откуда: Киев
Сообщений: 70
Konst_One
Сервер то у вас какой? и описание поля таблицы было бы неплохо увидеть

Сорри, туплю )
Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (Intel X86)
Поле: Settings, тип данных: nvarchar(max)
11 дек 12, 11:49    [13611412]     Ответить | Цитировать Сообщить модератору
 Re: Update для текстового поля, содержащего xml  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
должно всё нормально записываться

Declare @xml nvarchar(max)

SET @xml ='<?xml version="1.0" encoding="utf-8"?>
<ManagedExtension xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Name="SyntaxHighlighter">
  <AdminPage />
  <Author>&lt;a target="_new" href="http://dotnetblogengine.net/"&gt;BlogEngine.NET&lt;/a&gt;</Author>
  <Description>Adds &lt;a target="_new" href="http://alexgorbatchev.com/wiki/SyntaxHighlighter"&gt;Alex Gorbatchev''s&lt;/a&gt; source code formatter</Description>
  <Enabled>true</Enabled>
  <Priority>0</Priority>
  <Settings>
<Delimiter>44</Delimiter>
    <Help />
    <Hidden>false</Hidden>
    <Index>1</Index>
    <IsScalar>true</IsScalar>
    <Name>Themes</Name>
    <Parameters>
      <KeyField>false</KeyField>
      <Label>Themes</Label>
      <MaxLength>20</MaxLength>
      <Name>SelectedTheme</Name>
      <ParamType>ListBox</ParamType>
      <Required>false</Required>
      <SelectedValue>Dark</SelectedValue>
      <Values>Default</Values>
      <Values>Django</Values>
      <Values>Eclipse</Values>
      <Values>Emacs</Values>
      <Values>FadeToGrey</Values>
      <Values>MDUltra</Values>
      <Values>Midnight</Values>
      <Values>Dark</Values>
    </Parameters>
    <ShowAdd>true</ShowAdd>
    <ShowDelete>true</ShowDelete>
    <ShowEdit>true</ShowEdit>
  </Settings>
  <ShowSettings>true</ShowSettings>
  <Version>2.5.1</Version>
</ManagedExtension>
'

update MyTable
Set [Settings] = @xml
where [ID] = 1
11 дек 12, 11:54    [13611453]     Ответить | Цитировать Сообщить модератору
 Re: Update для текстового поля, содержащего xml  [new]
Allaire
Member

Откуда: Киев
Сообщений: 70
матерится на скобки ' в запросе
11 дек 12, 12:18    [13611636]     Ответить | Цитировать Сообщить модератору
 Re: Update для текстового поля, содержащего xml  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
' надо задваивать ''
у меня в запросе посмотрите
11 дек 12, 12:19    [13611649]     Ответить | Цитировать Сообщить модератору
 Re: Update для текстового поля, содержащего xml  [new]
Allaire
Member

Откуда: Киев
Сообщений: 70
Konst_One
' надо задваивать ''
у меня в запросе посмотрите

Спасибо! такой подход работает. А есть техника позволяющая апдейтнуть отдельную ветку xml файла, а не все целиком?
11 дек 12, 12:37    [13611821]     Ответить | Цитировать Сообщить модератору
 Re: Update для текстового поля, содержащего xml  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
если выгрузить в xml тип, потом поменять и обновить назад, то можно. или меняйте тип колонки сразу, если есть возможность.

ps
можно конечно поизвращаться с поиском в строке , но это на любителя
11 дек 12, 13:54    [13612513]     Ответить | Цитировать Сообщить модератору
 Re: Update для текстового поля, содержащего xml  [new]
Allaire
Member

Откуда: Киев
Сообщений: 70
Konst_One
если выгрузить в xml тип, потом поменять и обновить назад, то можно. или меняйте тип колонки сразу, если есть возможность.

ps
можно конечно поизвращаться с поиском в строке , но это на любителя


Спасибо за помощь. Тема закрыта.
11 дек 12, 14:03    [13612583]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить