Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование в среде .NET (ASP.NET,ADO.NET) на C#/VB.NET

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162

Открыть новую тему     Написать ответ в эту тему

Mike13x13



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Lihonosov
Зуб не отдам (с Ораклом не работал), но, по-моему, последняя точка с запятой в строке
Цитата:
"CREATE TABLE myTable (id varchar2(7) NOT NULL);"
явно лишняя.
Кроме того, стоило бы написать что-нить типа  
myCommand.Connection=myConnection;
уже после этого открыть коннект и выполнить запрос:
myConnection.Open();
myCommand.ExecuteNonQuery();
.
.
.

Всего записей: 93 | Зарегистр. 13-09-2007 | Отправлено: 20:11 02-06-2008 | Исправлено: Mike13x13, 20:18 02-06-2008
Lihonosov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mike13x13
Спасибо за ответ. Буду пробовать.
Просто программно таблицы никогда не создавал, а есть идея, чтобы при первом запуске приложения программно формировалась структура базы данных (т.е. создавались все таблицы, ограничения и отношения), а потом пользователи только заполняли данными эти таблицы.

Всего записей: 537 | Зарегистр. 05-07-2007 | Отправлено: 10:34 03-06-2008
Mike13x13



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Lihonosov

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

Идея хорошая, только не забывай что-нить типа  create .... where not exists, чтоб не было проблем при следующих запусках

Всего записей: 93 | Зарегистр. 13-09-2007 | Отправлено: 12:29 03-06-2008
eLLoco



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Lihonosov
Попробуй посмотреть в сторону ORM - там не только таблицы сами создаются, там и записи сами добавляются. Для .NET есть несколько мощных мапперов, ищи в гугле ".NET ORM".

Всего записей: 217 | Зарегистр. 03-08-2007 | Отправлено: 13:11 03-06-2008
Lihonosov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо.  
 
Mike13x13

Цитата:
create .... where not exists

Может знаете еще какие-нибудь похожие нюансы которые нужно учесть при проектировании такого рода приложения.
eLLoco
Скачал "ORM.NET-V1.7.2.35654" вечером попробую.

Всего записей: 537 | Зарегистр. 05-07-2007 | Отправлено: 14:36 03-06-2008
Lihonosov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mike13x13
Действительно, точка с запятой была лишней.
ORM.NET-V1.7.2.35654 - мне не подошел, т.к. это под SQLServer, а не под Oracle
 
Добавлено:
Может кому пригодится:
Есть примеры на C# для работы с СУБД Oracle:
http://www.mono-project.com/Oracle

Всего записей: 537 | Зарегистр. 05-07-2007 | Отправлено: 10:42 04-06-2008
Mike13x13



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Lihonosov

Цитата:
Может знаете еще какие-нибудь похожие нюансы ....  

Ньансов бывает достаточно много, но вылезают они чаще всего уже в процессе работы. Для проектирования баз, начиная с логического уровня и заканчивая переносом на физический могу посоветовать ERwin, он работает со многими СУБД. Но, если база небольшая, ИМНО, это лишнее.

Всего записей: 93 | Зарегистр. 13-09-2007 | Отправлено: 16:26 04-06-2008
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Такая задача: выбирается запись из основной таблицы, много полей из которой ссылаются на вторичные таблицы (справочник стран, валют и т. д.), и естественно, содержат идентификаторы. Вторичные таблицы считываю один раз, и они привязаны каждая к своему BindingSource. Проблема такая: как мне программно пробежаться по полям моей записи и автоматически определить, из какой вторичной таблицы  подставить значения? То есть, я хочу сформировать (не для записи обратно в базу, а для печати, например) запись, все поля которой уже содержат значения, но не ссылки-идентификаторы на вторичные таблицы. Как понимаю, надо структуру первичной таблицы исследовать, вопрос лишь в том, как эффективнее это сделать. Я использую нетипизированный DataSet. БД -- MS SQL Server 2005
 
Спасибо!

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 18:54 04-06-2008 | Исправлено: TeXpert, 18:55 04-06-2008
Varyag_Nord



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Приветствую!
Помогите пожалуйста, с решением задачи на С#, Очень надо...
Сама задача:
Тема: Создание проекта модели равнозамедленного движения двух объектов от центра по подвижному диску.
Задание: Создать систему для графической демонстрации равнозамедленного движения двух объектов от центра в противоположные стороны по подвижному диску.
Входные данные: угловая скорость вращения диска, радиус диска, скорость и ускорение движения каждого объекта.
Выходные данные: кривые, которые описывают объекты, модель движения с возможностью демонстрации сорости.
 
Помогите с решением плиз!!

Всего записей: 9 | Зарегистр. 05-06-2008 | Отправлено: 00:53 05-06-2008
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Varyag_Nord
выходишь на остановку рядом со свом ВУЗом и внимательно читаешь наклеенные бумажки
 
здесь люди делятся опытом, помогают разобраться в нюансах, ссылками меняются, врядли кто будет прямо в ветке постить весь код на твою лабу

Всего записей: 10457 | Зарегистр. 05-02-2003 | Отправлено: 07:09 05-06-2008
Varyag_Nord



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
я не прошу постить весь, а просто помочь с решением.
еще вопросик
Как сгенерировать окружность и заставить ее вращаться?

Всего записей: 9 | Зарегистр. 05-06-2008 | Отправлено: 23:51 05-06-2008
podumai



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
посиди подумай.




тут видимо синдром, не лечится

Всего записей: 8 | Зарегистр. 05-05-2008 | Отправлено: 00:14 06-06-2008 | Исправлено: ShIvADeSt, 01:53 06-06-2008
KChernov



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Varyag_Nord

Цитата:
я не прошу постить весь, а просто помочь с решением

Чтобы помочь с решением, надо чтобы это решение уже в каком-то виде было.
Будет попытка решения - можно будет обсуждать.
 
Вообще к такой задаче в первую очередь надо сделать математическую модель.
Весьма вероятно, что потом все сведется к прогонке задачи по времени с нужным шагом и выводе точек по координатам.
 

Цитата:
Как сгенерировать окружность и заставить ее вращаться?

Существует куча литературы по рисованию примитивов.
Например можно просто взять уравнение окружности в декартовой системе координат.
Вращать саму окружность смысла мало, так как это вообще говоря должно быть незаметно (она же центрально симметричная).
Если же на ней есть какой-то объект, то его и достаточно вращать (используя то же самое уравнение окружности параметризуемое углом).

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 12:18 06-06-2008
Mike13x13



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert

Цитата:
Такая задача: выбирается запись из основной таблицы, много полей из которой ссылаются..... Как понимаю, надо структуру первичной таблицы исследовать
 

Правильно понимаешь , без знания структуры базы тут что-то посоветовать сложно. Единственно, что могу сказать, если структура не слишком закручена (т.е., по по полю и значению в основной таблице сразу ясно из какой таблицы и какое значение нужно выбирать), то можно обойтись одним селектом типа
select t1.what1, ...,  t2.name, t3.name from table1 t1 join
table2 t2 on t2.fieldId=t1.fieldId2 join
table3 t3 on t3.fieldId=t1.fieldId3 ...
.
.
и сразу получить все нужные значения в виде Неймов а не Id-шек

Всего записей: 93 | Зарегистр. 13-09-2007 | Отправлено: 17:46 06-06-2008
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mike13x13 Спасибо, я примерно такое и предполагал, но меня интересует именно подробности этого момента
Цитата:
...без знания структуры базы тут что-то посоветовать сложно
А разве так нельзя: ведь в основной таблице же прописаны в виде ключей зависимости отдельных полей, вот как это лучше организовать (перебор полей с учётом внешних ключей). Необязательно, чтобы был один оператор, важна гибкость: поля могут измениться, поэтому вручную прописывать смысла нет, да и полей много, главное они, так скажем, volatile). А по полю и значению никак нельзя с ходу определить, с какой таблицы надо брать окончательное значение, поэтому надежда только на разбор дополнительной информации

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 22:09 06-06-2008
eLLoco



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mike13x13

Цитата:
Правильно понимаешь , без знания структуры базы тут что-то посоветовать сложно.

есть подозрение, что имелось ввиду программное исследование
 
TeXpert

Цитата:
Я использую нетипизированный DataSet.

в MSDN на статью наткнулся Navigating DataRelations (ADO.NET) в разделе Working with DataSets (ADO.NET), если у тебя отношения между таблицами настроены (а это must have), то все вроде бы просто, код из статьи:
 

Код:
 
DataRelation customerOrdersRelation =
    customerOrders.Relations.Add("CustOrders",
    customerOrders.Tables["Customers"].Columns["CustomerID"],
    customerOrders.Tables["Orders"].Columns["CustomerID"]);
 
DataRelation orderDetailRelation =
    customerOrders.Relations.Add("OrderDetail",
    customerOrders.Tables["Orders"].Columns["OrderID"],
    customerOrders.Tables["OrderDetails"].Columns["OrderID"], false);
 
DataRelation orderProductRelation =
    customerOrders.Relations.Add("OrderProducts",
    customerOrders.Tables["Products"].Columns["ProductID"],
    customerOrders.Tables["OrderDetails"].Columns["ProductID"]);
 
foreach (DataRow custRow in customerOrders.Tables["Customers"].Rows)
{
    Console.WriteLine("Customer ID: " + custRow["CustomerID"]);
 
    foreach (DataRow orderRow in custRow.GetChildRows(customerOrdersRelation))
    {
        Console.WriteLine("  Order ID: " + orderRow["OrderID"]);
        Console.WriteLine("\tOrder Date: " + orderRow["OrderDate"]);
 
        foreach (DataRow detailRow in orderRow.GetChildRows(orderDetailRelation))
        {
            Console.WriteLine("\t Product: " +
                detailRow.GetParentRow(orderProductRelation)["ProductName"]);
            Console.WriteLine("\t Quantity: " + detailRow["Quantity"]);
        }
    }
}
 

 
в твоем случае, думаю можно идти по полям DataTable из DataSet и проверять, включены ли поля в отношения, то есть явл. ли Foreign Key'ми, если да - цеплять childRow и брать нужное поле (есть подозрение, что DataSet'ы не позволят сделать запрос на выбор только одного поля из базы, хотя покопаться можно). теперь непонятно как определять нужное поле . можно хранить небольшую структурку (Dictionary, скажем), описывающую нужные поля, наверное, типа "Таблица - Глав. инф. поле" и потом пользовать как-то так  

Код:
 
childRow[dict["Customers"].LabelField]
 

полет фантазии пошел, закругляюсь

Всего записей: 217 | Зарегистр. 03-08-2007 | Отправлено: 22:25 06-06-2008
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
eLLoco  
Спасибо)  

Цитата:
...если у тебя отношения между таблицами настроены (а это must have)
База рабочая, проектировал не я, и изменять не я буду, моя задача как раз программно выдёргивать зависимости.
Цитата:
...в твоем случае, думаю можно идти по полям DataTable из DataSet и проверять, включены ли поля в отношения, то есть явл. ли Foreign Key'ми, если да - цеплять childRow и брать нужное поле (есть подозрение, что DataSet'ы не позволят сделать запрос на выбор только одного поля из базы, хотя покопаться можно)
Да, ты задачу правильно понял, меня как раз интересуют тонкости, как делать, сам бы нашёл, но по опыту программирования знаю, всегда может выползти какой-нибудь глюк, поэтому и обратился в свой любимый форум). Думаю, целиком считать схему основной таблицы, и мочить, смысла нету по отдельным полям запросы делать.
Цитата:
...теперь непонятно как определять нужное поле . можно хранить небольшую структурку (Dictionary, скажем)
Ну, я тут собрался Hashtable присобачить

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 23:12 06-06-2008 | Исправлено: TeXpert, 23:16 06-06-2008
Lihonosov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите.
Есть таблица, а в ней четыре поля:
id
name
date_start
date_finish
Никак не пойму как сделать, чтобы было ограничение на вставку:
Ели в таблице уже есть строка с таким же name, то  ее можно вставить только в том случае, если поле этой строки date_start отличается от существующих полей в таблицы с таким же полем name на три и более года.
(например, таблицы групп учебного заведения, есть группы:
...
1     0001   01.09.2000    30.06.2003
2     0002   01.09.2000    30.06.2003
...
такую строку вставить можно:  
3     0001   01.09.2003    30.06.2006
а такую нет:
4     0001   01.09.2001    30.06.2004
Объяснил как мог

----------
Никто не знает всего, а тем более не знает ничего тот, кто сам не подозревает, что многого не знает.

Всего записей: 537 | Зарегистр. 05-07-2007 | Отправлено: 16:18 09-06-2008
Mike13x13



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Lihonosov
Я так понимаю, речь снова об Оракле? В любом случае, про Оракл точно не скажу. А в MSSQL можно использовать в таком случае триггеры или чеки. Но обратно же, я ими не пользуюсь, всегда удавалось сделать уникальный ключ. А для такого случая использовал бы программную проверку перед операцией вставки с селектом такого типа:
select 1 from table where exists (select 1 from table where (name='chek_name' and date_start<(check_date+3years) and date_start>(check_date-3years))  
Можно и без exists, но в таком случае результирующий набор может быть достаточно большим.

Всего записей: 93 | Зарегистр. 13-09-2007 | Отправлено: 20:15 09-06-2008 | Исправлено: Mike13x13, 20:18 09-06-2008
Lihonosov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mike13x13

Цитата:
Я так понимаю, речь снова об Оракле?  

Да

Цитата:
select 1 from table where exists (select 1 from table where (name='chek_name' and date_start<(check_date+3years) and date_start>(check_date-3years))  

Спасибо. Буду пробовать.
Еще вопрос.  
На форме есть ComboBox и DataGridView каждый связан со своим DataSource.
ComboBox - это своего рода справочник значений.
Вешаю на DataGridView обработчик OnCellValueChanged (помоему такой):
...
if(DataGridView1.Rows.count>0)
{
       ComboBox.SelectedValue=DataGridView.CurrentRow.Cell[0].Value;
}
 
Все нормально, при выделении строки в гриде и в комбобоксе выделяется нужное значение из грида, но если клацнуть по заголовку столбца, чтобы изменить сортировку, то программа вылетает с ошибкой:  
ComboBox.SelectedValue=DataGridView.CurrentRow.Cell[0].Value; - что-то типа неправильная ссылка.
Понимаю что, что-то забыл, но что?

Всего записей: 537 | Зарегистр. 05-07-2007 | Отправлено: 16:02 10-06-2008
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование в среде .NET (ASP.NET,ADO.NET) на C#/VB.NET


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru