DataAdapter Выбрать строку из схемы базовой таблицы? - PullRequest
1 голос
/ 07 апреля 2009

Когда я строил свой .xsd, мне приходилось выбирать столбцы для каждой таблицы, и он создавал схему для таблиц, верно? Итак, как я могу получить эту строку Select для использования в качестве базовой команды Select для новых экземпляров dataadapters, а затем просто добавить к ней предложения Where и OrderBy по мере необходимости?

Это избавило бы меня от необходимости синхронизировать список полей каждого DataAdapter (для одной и той же таблицы) со схемой этой таблицы в файле .xsd.

Разве не принято иметь несколько адаптеров данных, которые работают с определенной схемой таблицы, но с разными параметрами в предложениях Where и OrderBy? Конечно, не нужно поддерживать (или даже создавать заново) часть списка полей строк Select для полдюжины адаптеров данных, которые все работают в одной и той же схеме таблицы.

Я представляю что-то вроде этого псевдокода:

BaseSelectString = MyTypedDataSet.JobsTable.GetSelectStringFromSchema()  // Is there such a method or technique?

WhereClause = " Where SomeField = @Param1 and SomeOtherField = @Param2"
OrderByClause = " Order By Field1, Field2"

SelectString=BaseSelectString + WhereClause + OrderByClause

OleDbDataAdapter adapter = new OleDbDataAdapter(SelectString, MyConn)

1 Ответ

2 голосов
/ 08 мая 2010

У каждой таблицы есть запрос по умолчанию (тот, что сверху, с проверкой на нем). Когда вы перетащили свои таблицы в набор данных для создания запроса, он написал оператор SQL, который он использует для создания схемы вашей таблицы. Сохраняйте этот запрос простым, вы можете фактически не использовать его в коде, и вы всегда можете отредактировать этот запрос, чтобы обновить схему таблицы.

Каждый раз, когда вы открываете запрос по умолчанию, он подключается к вашему источнику данных и позволяет вам выбирать новые столбцы, которых там раньше не было. Если вы хотите обновить существующие столбцы, удалите все столбцы из таблицы, прежде чем пытаться открыть запрос. Когда вы сохраняете запрос, ваши обновленные столбцы добавляются обратно.

Убедитесь, что строка подключения имеет разрешения для просмотра информации о столбце.

Вы можете добавить несколько запросов в один TableAdapter. Адаптеры таблиц в конструкторе отображаются в разрезе со схемой таблицы вверху и запросами внизу. Запрос по умолчанию будет определять, какие столбцы доступны для вывода из других запросов. Чтобы добавить дополнительный запрос, щелкните правой кнопкой мыши TableAdapter и выберите «Добавить-> Запрос», или, если вы выбираете нижнюю часть TableAdapter, вы можете выбрать «Добавить запрос ...». Любой новый запрос SQL, который вы создадите, будет начинаться с SQL из запроса по умолчанию. Каждому новому запросу вы даете имя метода, которое вы можете использовать вместо методов по умолчанию «Fill» или «GetData». Предполагается, что каждый новый запрос будет иметь набор результатов, который соответствует запросу по умолчанию, даже если они могут иметь разные параметры предложения where.

Короче

  • У вас может быть один TableAdapter для каждой таблицы, просто добавьте несколько запросов.
  • Каждый дополнительный запрос может иметь разные параметры предложения Where, если они все возвращают одинаковые столбцы.
...