Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Можно ли назвать колонку в DataSet произвольно (не так как в базе)? / 12 сообщений из 12, страница 1 из 1
31.08.2008, 09:37
    #35514774
korolekSA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли назвать колонку в DataSet произвольно (не так как в базе)?
Добрый день! Подскажите, решаема ли вообще такая проблема:

Название колонки в базе Access содержит запятую. Сгенерировали xml для создания DataSet. Но при создании DataSet выдается ошибка, что нельзя иметь запятую в названии колонки.
Каким образом мне загрузить данные из этой колонки? Переименование колонки - самый нежелательный вариант. Может быть можно назвать колонку в DataSet другим именем и каким-то образом установить связь между ней и нужной колонкой в БД?
...
Рейтинг: 0 / 0
31.08.2008, 09:42
    #35514776
SQL_Lamer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли назвать колонку в DataSet произвольно (не так как в базе)?
korolekSAДобрый день! Подскажите, решаема ли вообще такая проблема:

Название колонки в базе Access содержит запятую. Сгенерировали xml для создания DataSet. Но при создании DataSet выдается ошибка, что нельзя иметь запятую в названии колонки.
Каким образом мне загрузить данные из этой колонки? Переименование колонки - самый нежелательный вариант. Может быть можно назвать колонку в DataSet другим именем и каким-то образом установить связь между ней и нужной колонкой в БД?

DataSet никаких колонок не содержит, а если вы имеете в виду DataTable - то используя DataReader вы просто можете считать записи построчно, а колонку обозвать, как душеньке угодно.

А вообще - то дикость запятую иметь в названии, я бы переименовал.
...
Рейтинг: 0 / 0
31.08.2008, 09:45
    #35514777
SQL_Lamer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли назвать колонку в DataSet произвольно (не так как в базе)?
Невнимательно прочитал.

авторСгенерировали xml для создания DataSet
Это для чего?
...
Рейтинг: 0 / 0
31.08.2008, 10:40
    #35514802
korolekSA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли назвать колонку в DataSet произвольно (не так как в базе)?
Конечно, имелось в виду DtaaTable.

В файле xml прописывается структура БД - таблицы, первичные ключи, связи
у DataSet есть метод ReadXmlSchema(имя файла xml), с помощью которого в датасет загружается структура БД. Затем создаются адаптеры для таблиц с запросами select, insert, update, delete
Через эти адаптеры мы и читаем из базы и пишем в нее.

Так вот в xml не позволяется прописывать имя колонки с запятой...
...
Рейтинг: 0 / 0
31.08.2008, 12:42
    #35514861
SQL_Lamer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли назвать колонку в DataSet произвольно (не так как в базе)?
korolekSAКонечно, имелось в виду DtaaTable.

В файле xml прописывается структура БД - таблицы, первичные ключи, связи
у DataSet есть метод ReadXmlSchema(имя файла xml), с помощью которого в датасет загружается структура БД. Затем создаются адаптеры для таблиц с запросами select, insert, update, delete
Через эти адаптеры мы и читаем из базы и пишем в нее.

Так вот в xml не позволяется прописывать имя колонки с запятой...

То-есть xml вот такое, к примеру не позволяет: <columnName>Гы,Гы-Гы,ГыГы==ЫЫ</columnName> да?
С каких пор?
...
Рейтинг: 0 / 0
31.08.2008, 13:36
    #35514881
korolekSA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли назвать колонку в DataSet произвольно (не так как в базе)?
При вызове ReadXmlSchema у датасета возникает исключение:

Код: plaintext
1.
Invalid 'name' attribute value 'Pann,atm': 'The ',' character, hexadecimal value 0x2C, at position 4 within the name, cannot be included in a name.'.

вот строчка в xml, из-за которой весь сыр-бор:

Код: plaintext
1.
<xs:element name="Pann,atm" type="xs:double" minOccurs="0"/>
...
Рейтинг: 0 / 0
31.08.2008, 13:49
    #35514893
SQL_Lamer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли назвать колонку в DataSet произвольно (не так как в базе)?
Ну так реализуйте свою схему, если эта запятая вам дорога, как память.
С одной стороны вы хотите пользоваться стандартными решениями, с другой - имена атрибутов у вас знаки препинания содержат. Чудес на свете не бывает.
...
Рейтинг: 0 / 0
31.08.2008, 15:02
    #35514957
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли назвать колонку в DataSet произвольно (не так как в базе)?
Попробуйте название колонки заключить в квадратные скобки.
...
Рейтинг: 0 / 0
01.09.2008, 14:54
    #35516137
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли назвать колонку в DataSet произвольно (не так как в базе)?
Вот пример на "родной" схеме:

Код: plaintext
1.
2.
3.
4.
5.
6.
// Запись
DataTable dt1 = new DataTable("table");
dt1.Columns.Add("Pann,atm", typeof(string));
for (int i =  0 ; i <  5 ; i++)
    dt1.Rows.Add("value" + i);
dt1.WriteXml(@"C:\Test.xml");
dt1.WriteXmlSchema(@"C:\Test.xsd");

Получаются такие xml-льник и схема:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<?xml version="1.0" standalone="yes"?>
<DocumentElement>
  <table>
    <Pann_x002C_atm>value0</Pann_x002C_atm>
  </table>
  <table>
    <Pann_x002C_atm>value1</Pann_x002C_atm>
  </table>
  <table>
    <Pann_x002C_atm>value2</Pann_x002C_atm>
  </table>
  <table>
    <Pann_x002C_atm>value3</Pann_x002C_atm>
  </table>
  <table>
    <Pann_x002C_atm>value4</Pann_x002C_atm>
  </table>
</DocumentElement>

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<?xml version="1.0" standalone="yes"?>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="table" msdata:UseCurrentLocale="true">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="table">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Pann_x002C_atm" type="xs:string" minOccurs="0" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>

Код: plaintext
1.
2.
3.
// Чтение
DataTable dt2 = new DataTable("table");
dt2.ReadXmlSchema(@"C:\Test.xsd");
dt2.ReadXml(@"C:\Test.xml");
...
Рейтинг: 0 / 0
01.09.2008, 16:17
    #35516383
korolekSA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли назвать колонку в DataSet произвольно (не так как в базе)?
МСУ спасибо! не догадалась таким образом проверить, сейчас попробую.
...
Рейтинг: 0 / 0
01.09.2008, 16:27
    #35516405
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли назвать колонку в DataSet произвольно (не так как в базе)?
Да Вам в схеме всего-то исправить:

Код: plaintext
<xs:element name="Pann,atm" type="xs:double" minOccurs="0"/>

на

Код: plaintext
<xs:element name="Pann_x002C_atm" type="xs:double" minOccurs="0"/>
...
Рейтинг: 0 / 0
02.09.2008, 00:05
    #35517025
korolekSA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли назвать колонку в DataSet произвольно (не так как в базе)?
Все получилось! Всем спасибо за потраченное время, и отдельное спасибо МСУ
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Можно ли назвать колонку в DataSet произвольно (не так как в базе)? / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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