powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Пустой импорт xml из sql таблицы в DataTable, ошибок не выдает,
4 сообщений из 4, страница 1 из 1
Пустой импорт xml из sql таблицы в DataTable, ошибок не выдает,
    #40027728
urachins
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как правильно импортировать таблицу из SQL в форме xml строки в C# DataTable ?
Мой код ошибок не выдает, но таблица пустая. Схема в XML добавляется. Можно увидеть пример работающего C#кода?

C#:
Код: c#
1.
2.
3.
4.
5.
6.
7.
DataTable RWSDeleted = new DataTable();
RWDTSOld.TableName = "RWSDeleted";
RWSDeleted.Columns.Add("TableName", typeof(string));
RWSDeleted.Columns.Add("RowNum", typeof(int));

StringReader sRead = new StringReader(data);
RWSDeleted.ReadXml(sRead);



Строка в SQL:
Код: sql
1.
2.
3.
4.
5.
6.
7.
declare @StrDeleted nvarchar(max)
Create table #RWSDeleted (TableName nvarchar(20), RowNum int)
insert into #RWSDeleted values('qqqq', 4)
insert into #RWSDeleted values('wwww', 5)

set @StrDeleted = cast( (SELECT * FROM #RWSDeleted as [RWSDeleted]
FOR XML AUTO, BINARY BASE64, ELEMENTS, Root ('DeletedRow'), type, xmlschema('RWSDeleted') ) as nvarchar(max))



Спасибо

Модератор: Учимся использовать тэги оформления кода - FAQ
...
Рейтинг: 0 / 0
Пустой импорт xml из sql таблицы в DataTable, ошибок не выдает,
    #40027746
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urachins
Код: c#
1.
2.
RWDTSOld.TableName = "RWSDeleted";
RWSDeleted.Columns.Add("TableName", typeof(string));


1. TableName присваивается не той DataTable, в которую производится импорт XML. У той, в которую производится импорт, TableName=null (т.к. ничего не присвоили), и поэтому ни ошибок, ни данных.
2. При наличии в XML схемы не нужно добавлять никаких колонок, фреймворк сам создаст по схеме.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
using (var cnn = new SqlConnection(@"Data Source=.;Initial Catalog=master;Integrated Security=True"))
using (var cmd = new SqlCommand(@"
  select top 2 * from sys.objects as DataTable
  for xml auto, binary base64, elements, root('NewDataSet'),
  type, xmlschema('NewDataSet')", cnn))
{
  cnn.Open();
  using (var rd = cmd.ExecuteReader())
  {
    rd.Read();
    var dt = new DataTable { TableName = "DataTable" };
    using (var xr = rd.GetSqlXml(0).CreateReader())
      dt.ReadXml(xr);
    Console.WriteLine("{0} {1}", dt.Columns.Count, dt.Rows.Count);
  }
}


В консоли: 12 2.
...
Рейтинг: 0 / 0
Пустой импорт xml из sql таблицы в DataTable, ошибок не выдает,
    #40027753
urachins
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры Павловны,
Да, извиняюсь, это я ошибся в примере, в собственном коде у меня было правильно: RWSDeleted.TableName = "RWSDeleted";
Но все равно не работает.
У Вас xml формируется через var xr = rd.GetSqlXml(0).CreateReader(), то есть экспорт-импорт в C# работает, а я хочу передавать таблицу в виде строки из хранимки через FOR XML AUTO
...
Рейтинг: 0 / 0
Пустой импорт xml из sql таблицы в DataTable, ошибок не выдает,
    #40027791
urachins
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры Павловны,
Да, все правильно, моя ошибка была в дублировании структуры приемной таблицы (Columns.Add), оставил на всякий случай, без этого все заработало
Спасибо!
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Пустой импорт xml из sql таблицы в DataTable, ошибок не выдает,
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]