Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Клиентская часть БД, вопросы 
:(
    Опции темы
PavelVik
Дата 14.10.2009, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 12.5.2008

Репутация: нет
Всего: нет



Здравствуйте, уважаемые!

Начинаю работать с базами данных, возникли некоторые вопросы. Со стороны БД вроде всё сделал, теперь подошла очередь клиентской части.

База данных - SQL Compact.
Среда разработки - Visual C#.

Программа является каталогом книг, схема БД:

user posted image

Пользовательский интерфейс стандартный - dataGridView со списком книг, по двойному клику на строке - форма с полями для редактирования. Добавление записи, удаление, поиск.

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

Насколько я понял, вариантов работы два:
1. С помощью нетипизированного DataSet (что загрузится, то и загрузится).
2. С помощью типизированного DataSet (генерируется из xsd-схемы БД).

Притом, во втором случае требуется перекомпиляция проекта при изменеии структуры БД.

А у меня родилась идея создавать типизированный DataSet во время исполнения программы, загружая структуру из внешнего файла.
Например, вот такого формата:

Код

<?xml version="1.0" encoding="utf-8"?>
<Database>
    <Tables>
        <Table name="book">
            <Column name="id"           type="int"      length="4"      >ID</Column>
            <Column name="bk_title"     type="nvarchar" length="100"    >Title</Column>
            <Column name="bk_isbn"      type="nvarchar" length="100"    >ISBN</Column>
            <Column name="bk_publisher" type="nvarchar" length="100"    >Publisher</Column>
            <Column name="bk_place"     type="nvarchar" length="100"    >Place</Column>
            <Column name="bk_format"    type="nvarchar" length="100"    >Format</Column>
            <Column name="bk_pages"     type="int"      length="4"      >Pages</Column>
            <Column name="bk_copies"    type="smallint" length="2"      >Copies</Column>
            <Column name="bk_series"    type="nvarchar" length="100"    >Series</Column>
            <Column name="bk_date"      type="nvarchar" length="100"    >Date</Column>
            <Column name="bk_copyright" type="nvarchar" length="100"    >Copyright</Column>
            <Column name="bk_location"  type="nvarchar" length="100"    >Location</Column>
            <Column name="bk_condition" type="tinyint"  length="1"      >Condition</Column>
            <Column name="bk_rating"    type="tinyint"  length="1"      >Rating</Column>
            <Column name="bk_comments"  type="nvarchar" length="1000"   >Comments</Column>
        </Table>
    </Tables>
    <Keys>
        <Key>
        </Key>
    </Keys>
</Database>


Этот же файл можно использовать для димамической генерации контролов на форме редактирования/добавления записи..
Насколько такая идея жизнеспособна?



Это была первая часть вопроса. Вторая касается непосредственно работы с базой данных. Какой основной принцип работы? То, что я нашел, выглядит примерно таким образом: 
1. Загружаем данные из БД вместе со всеми связями в DataSet (с помощью DataAdapter)
2. Работаем с этим DataSet-ом (редактируем, удаляем/добавляем записи..)
3. Загружаем изменения в БД (с помощью DataAdapter)

А если база большая? И надо делать специальные выборки?

Подскажите, какую литературу можно почитать про построение клиентских приложений БД в среде .NET?
PM MAIL   Вверх
jonie
Дата 14.10.2009, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 8
Всего: 118



Цитата

Этот же файл можно использовать для димамической генерации контролов на форме редактирования/добавления записи..
Насколько такая идея жизнеспособна?
нежизнеспособна, а уже давно применяется. Например вот тут: http://www.devexpress.com/Products/NET/App...tion_Framework/

Цитата


А если база большая? И надо делать специальные выборки?
есть например EntityFramework, забудьте про DataSet - устарело это уже. Есть NHibernate (как аналог) и т.д - их немало.




--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0520 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.