Форум Херсона. Форум Херсонской молодежи.

Форум Херсона. Форум Херсонской молодежи. (http://forum.norma4.net.ua/)
-   Программирование (http://forum.norma4.net.ua/programmirovanie/)
-   -   Visual Studio Express C# + MySQL (http://forum.norma4.net.ua/programmirovanie/48768-visual-studio-express-c-mysql.html)

wouldnt_even 25.05.2012 15:13

Цитата:

Сообщение от ustas (Сообщение 854988)
запили еще раз пож-ста полностью код который добавляет/редактирует данные в какой либо таблице, где эти эксепшены вылазят
+ структуру таблицы
+ какой у тебя движок таблиц мускула isam или innodb?

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

в этой таблице они и не нужны, я всегда могу округлить, или изменить структуру таблицы. но float и double дают еще более плачевный эффект.

"CREATE TABLE IF NOT EXISTS operations (" +
"ops_id int not null auto_increment, primary key(ops_id)," +
"voyages_id int," +
"vessels_id int," +
"date datetime,"+
"till datetime," +
"time_spent decimal (10,4)," +
"ops_type varchar(15)," +
"location varchar(50)," +
"bunk_rob decimal (10,4)," +
"bunk_rob_onsail decimal (10,4)," +
"lo_rob decimal (10,4)," +
"lo_rob_onsail decimal (10,4)," +
"fw_rob decimal (10,4)," +
"mileage decimal (10,4)," +
"eta datetime,"+
"da decimal (10,4)," +
"ctm decimal (10,4)," +
"repair_exp decimal (10,4)," +
"bunk_supply decimal (10,4)," +
"fw_supply decimal (10,4)," +
"lo_supply decimal (10,4)," +
"bunk_price decimal (10,4)," +
"fw_price decimal (10,4)," +
"lo_price decimal (10,4)," +
"var_exp decimal (10,4)," +
"var_exp_comm text," +
"comment text," +
"frt_received decimal (10,4)," +
"brokerage decimal (10,4)," +
"demurrage decimal (10,4)," +
"dispatch decimal (10,4)" +
") ENGINE=INNODB;";

+++++++++++++++++

private void updateOpsTable()
{

DialogResult result = MessageBox.Show("Save changes?", "saving...", MessageBoxButtons.YesNo);
if (result == System.Windows.Forms.DialogResult.No) return;

this.opsDgv.BeginEdit(true);
this.opsDgv.BeginEdit(false);
this.opsDgv.EndEdit(); // Synchronizing with textbox data

DataTable changesOps = dataOps.GetChanges();
if (changesOps == null) return; // no changes = no update

foreach (DataRow dr in changesOps.Rows)
{
if (dr.RowState.ToString().Equals("Deleted") ) continue;

dr[1] = selectedVoyageIndex;
dr[2] = selectedVesselIndex;
}

try
{
daOps.Update (changesOps);
dataOps.AcceptChanges(); // вот здесь все останавливается
}
catch (DBConcurrencyException err)
{
MessageBox.Show(err.Message);
}

//populateOperationsTable();
}

PhoeniXX 25.05.2012 16:04

С ходу нужно изменить -
if (dr.RowState.ToString().Equals("Deleted") ) continue;
на
if (dr.RowState == DataRowState.Deleted) continue;

А то это уж как-то сильно уж..... :)
Это ж enum, тобишь int, а конвертить его в строку, чтобы сравнить с другой строкой это жестоко 6)

Почесав затылок, юзер дописал через 7 минут
А как описан daOps - который походу DataAdapter? В коде или в дизайнере? У MySqlDataAdapter должно быть свойство - UpdateCommand, можешь его содержимое тоже запостить сюда?

wouldnt_even 25.05.2012 16:27

Цитата:

Сообщение от PhoeniXX (Сообщение 855038)
А как описан daOps - который походу DataAdapter? В коде или в дизайнере? У MySqlDataAdapter должно быть свойство - UpdateCommand, можешь его содержимое тоже запостить сюда?

я смотрел апдейт команд,

без
cbOps.ConflictOption = ConflictOption.OverwriteChanges;

генерится команда, в которой все данные в базе сверяются с данными таблицы. на этой проверке и происходит облом, так как (как оказалось):

decimal c# != decimal MySql. (не всегда, но часто, зависит от числа знаков после запятой. именно поэтому все работало до того самого момента, пока я вчера не дописал вычислительную часть и не попытался записать результаты в базу).

если установить флаг:
cbOps.ConflictOption = ConflictOption.OverwriteChanges;

то генерируется более простой команд. set, values, where.

и, соответственно, все отлично апдейтится.

я так понял, что эта проблема уже очень старая и в баглисте MySQL она уже много лет.

ustas 25.05.2012 17:08

таки что у тебя за движок таблиц мускула isam или innodb?

PhoeniXX 25.05.2012 17:10

Цитата:

Сообщение от ustas (Сообщение 855060)
таки что у тебя за движок таблиц мускула isam или innodb?

Цитата:

Сообщение от wouldnt_even (Сообщение 855019)
"CREATE TABLE IF NOT EXISTS operations (" +
"ops_id int not null auto_increment, primary key(ops_id)," +
.....
"dispatch decimal (10,4)" +
") ENGINE=INNODB;";


----------

ustas 25.05.2012 17:13

торможу однако

wouldnt_even 25.05.2012 17:17

а по ходу основная-то работа сделана :) осталось только оптимизировать алгоритм поиска расстояний между портами и всем текстбоксам повесить проверки на Leave чтоб не вводили чепуху типа "1234567,1234567".

wouldnt_even 30.05.2012 23:43

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

wouldnt_even 01.06.2012 19:51

Все-таки поставил себе полную версию VS 2010 (не Express). Поэкспериментировал с dotConnect от Devart. Все красиво, никаких фокусов с параллелизмом, даже если с плавающей точкой работать. Теперь вот думаю, стоит ли все переписывать...

накой я вообще с этим Экспрессом связывался. столько бы гемора избежал сразу.

PhoeniXX 01.06.2012 19:53

Мне никогда не приходилось использовать Express варианты :)

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

wouldnt_even 01.06.2012 20:35

Цитата:

Сообщение от PhoeniXX (Сообщение 857661)
Мне никогда не приходилось использовать Express варианты :)

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

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

Кстати, как говорится, все, что не делается - все к лучшему. Мучаясь с экспресс версией я хоть разобрался, как это все работает.

PhoeniXX 01.06.2012 21:05

Цитата:

Сообщение от wouldnt_even (Сообщение 857682)
Кстати, как говорится, все, что не делается - все к лучшему. Мучаясь с экспресс версией я хоть разобрался, как это все работает.

И это кстати очень хорошо :) такие вещи могут пригодиться вполне :)

ustas 01.06.2012 21:14

"Рефакторинг"/переписывание дело нужное и полезное (если время позволяет), главное с фичами не переборщить :).
Хуича — негодная, ненужная фича. Охуича — восхитительная, инновационная фича.

wouldnt_even 02.07.2012 19:34

тут вот назрела идея некоторые фичи моей программы сделать доступными в качестве вэб приложения.

Так вот, если при разработке клиента преимущества .net были очевидны, особенно в плане работы с базами данных. А вот в серверной части, я так понял, не все однозначно. После недели беглого ознакомления с ASP.NET и Java EE, не нашел вообще никаких преимуществ у ASP.NET... видимо придется обращаться к истокам.

может я чего недопонял?

PhoeniXX 02.07.2012 19:38

Цитата:

Сообщение от wouldnt_even (Сообщение 868275)
тут вот назрела идея некоторые фичи моей программы сделать доступными в качестве вэб приложения.

Так вот, если при разработке клиента преимущества .net были очевидны, особенно в плане работы с базами данных. А вот в серверной части, я так понял, не все однозначно. После недели беглого ознакомления с ASP.NET и Java EE, не нашел вообще никаких преимуществ у ASP.NET... видимо придется обращаться к истокам.

может я чего недопонял?

Я не понял вопрос, что значит обращяться к истокам?

Почесав затылок, юзер дописал через 2 минуты
ASP.Net WebForm включает в себя довольно много разных готовых контролов, и MS пошла путём облегчение их использования. В простом варианте все сводиться - кинуть на страницу контролы, настроить взаимодейсвие, и все. На практике способ не удобных, и всеравно лучше писать их самому в разметке, так как студийный дизайнер довольно извращённый.

Либо Asp.Net MVC. Он более современен, и более изящен, но стандартных контролов под него меньше, так как он более web friendly чтоли. Засчет этого, на нём намного проще использовать jQuery UI, и остальные JS контролы.

Почесав затылок, юзер дописал через 30 секунд
Я использовал Java Wicket, и могу сказать, что разница между ним и WebForm-ами не на столько разительная. Общие идеи схожи.

wouldnt_even 02.07.2012 19:40

Цитата:

Сообщение от PhoeniXX (Сообщение 868278)
Я не понял вопрос, что значит обращяться к истокам?

к Яве. и тут один минус все-таки есть. на том же rutracker'e просто огромное количество всяких курсов и обучающих программ по ASP.NET а по JSP/JSF "с гулькин нос".

а хост для ASP.NET должен быть только на винде? там по умолчанию IIS 7.5 используется, есть ли AS под линукс? для явы тут глаза разбегаются - JBOSS, TomCat, GlassFish и иже с ними.

PhoeniXX 02.07.2012 19:46

Java EE, тобишь enterprise, насколько я понимаю к вебу имеет отношение далёкое. И если уже рассматривать Java, то нужно смотреть на Spring\Wicket\JSF\etc

Почесав затылок, юзер дописал через 4 минуты
Цитата:

Сообщение от wouldnt_even (Сообщение 868283)

а хост для ASP.NET должен быть только на винде? там по умолчанию IIS 7.5 используется, есть ли AS под линукс? для явы тут глаза разбегаются - JBOSS, TomCat, GlassFish и иже с ними.

При прочих равных - да. Но есть нюансы, можно вполне все это запустить под Apache-м с использованием Mono. Это связка работает на Linux\MacOS-и. Нюансы в том, что код тогда должен быть платформо независим, тобишь никаких абсолютных путей. Не должны использоваться WinApi, и подобные вещи. То есть все то, что отличается.

Под Mono, насколько я помню работает ASP.Net 4.0, и MVC 3.0, но нужно бы перепроверить.

wouldnt_even 02.07.2012 19:52

я объясню причину, по которой интересуюсь - когда я начинал этот проект я взялся за Яву, но потом уж очень много времени уходило на возню с интерфейсом. Поэтому, я ради интереса, попробовал VS2010+C#. за неделю разобрался со спецификой платформы и потом быстро все написал. как в известном мультфильме - "лучше день потерять, но потом за 5 минут долететь".

теперь вот стою перед выбором ASP.NET MVC3 vs SpringMVC3+Hibernate.

PhoeniXX 02.07.2012 19:58

Цитата:

Сообщение от wouldnt_even (Сообщение 868294)
я объясню причину, по которой интересуюсь - когда я начинал этот проект я взялся за Яву, но потом уж очень много времени уходило на возню с интерфейсом. Поэтому, я ради интереса, попробовал VS2010+C#. за неделю разобрался со спецификой платформы и потом быстро все написал. как в известном мультфильме - "лучше день потерять, но потом за 5 минут долететь".

теперь вот стою перед выбором ASP.NET MVC3 vs SpringMVC3+Hibernate.

Я не скажу за Spring, но насколько я помню он очень близок по идеологии к Asp.Net MVC, так как паттерн тот же. На практике же, на Asp.Net MVC + EntityFramework\LinqToSql можно довольно быстро делать приложения. Ну и само собой здесь прийдется самому писать разметку, JS взаимодействие. Здесь в принципе ничего особенного нету, но не все это любят.

Да, EntityFramework под Mono вроде не работает. LinqToSql - работает. С таким же успехом можно смотреть на связку Asp.Net MVC3 + nHibernate. Связка вполне нормальная, я как-то использовал подобное.
Но если нужно всетаки нужно будет хоститься на Linux-е под Apache+Mono, то лучше сразу погуглить на эту тему, насколько это все работоспособно, так как я на своей практике с подобным не сталкивался.

Почесав затылок, юзер дописал через 1 минуту
А если хостинг не проблема, то на чем писать, это наверно уже дело вкуса.

wouldnt_even 02.07.2012 20:01

Цитата:

Сообщение от PhoeniXX (Сообщение 868295)
Да, EntityFramework под Mono вроде не работает. LinqToSql - работает. С таким же успехом можно смотреть на связку Asp.Net MVC3 + nHibernate. Связка вполне нормальная, я как-то использовал подобное.

LinqToSql вряд ли мне поможет - так как базы я сделал в MySQL... поэтому даже в десктопном клиенте, что уже работает, его не использовал.

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

PhoeniXX 02.07.2012 21:01

Цитата:

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

в WebForm-ах есть DataGrid, но он специфичный, и не умеет всего того, что умеет WinForm GridView.
В MVC грида нет, и нужно его искать, для примера - jqGrid

WebForm-ы со старта обычно проще, так как они близки к WinForm-ам, но при этом это их основной недостаток.

wouldnt_even 02.07.2012 21:06

вроде нарыл неплохой туториал по Spring MVC 3. сегодня-завтра напишу простейший пример. Сравню ощущения с ASP.NET потом отпишусь.

подсознательно понимаю, что с ASP.NET будет проще, хотя бы из-за большого количества примеров и обучающих видео. Но чего-то вот хочется дать шанс яве.

PhoeniXX 02.07.2012 21:13

Опять же незнаю насчет спринга, но насколько я знаю Wicket плавно набирает популярность, и может имеет смысл глянуть и на него вместо спринга

wouldnt_even 02.07.2012 21:24

Цитата:

Сообщение от PhoeniXX (Сообщение 868338)
Опять же незнаю насчет спринга, но насколько я знаю Wicket плавно набирает популярность, и может имеет смысл глянуть и на него вместо спринга

Гляну обязательно. честно говоря, я про Wicket первый раз услышал от тебя в этой ветке. :) Так что надо смотреть. А spring мелькает в каждой вакансии по Java.

поиск по Wicket тоже дал результат. скачал примеры - буду пробовать.

еще раз спасибо за наводку.

ustas 02.07.2012 21:46

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

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

wouldnt_even 02.07.2012 21:58

Цитата:

Сообщение от ustas (Сообщение 868358)
настоятельно рекомендую прежде чем использовать спринг и прочее, набросать что то простяцкое используя стандартный механизм (jsp, сервлетыи прочее), очень поможет потом и спринг оценить по достоинству и викет
родитель у них кстати один и тот же Apache

JSP/JSF/Servlets я уже опробовал. (тем более, что ,как я понял из официального руководства по JavaEE, JSF/JSP все равно потом компилируются в те же сервлеты).

ustas 02.07.2012 22:07

ежели пробовал, то спринг и хибернейт в связке напрашиваются в следующий хелло ворлд

wouldnt_even 02.07.2012 22:58

Цитата:

Сообщение от ustas (Сообщение 868364)
ежели пробовал, то спринг и хибернейт в связке напрашиваются в следующий хелло ворлд

старею наверное, в простом JSP и доступ к базе получил и сделать, в принципе, можно все, что мне нужно, но хочется как-то более организованно и культурно.

<%@ page import="java.sql.*" %><%@ page import="java.io.*" %> <%@ page import="com.mysql.*" %>
<? xml version="1.0"?>

<capital_shipping>
<%
Connection con = null;
Statement stmt = null;
ResultSet rs = null;

try{
Class.forName("com.mysql.jdbc.Driver").newInstance ();
con=DriverManager.getConnection("jdbc:mysql://192.168.1.7:3306/capital_shipping",
"root", "12345");
out.println("Connected to database!!!");
stmt = con.createStatement();
String query = "SELECT * FROM vessels;";
rs = stmt.executeQuery(query);
while (rs.next()){
%>

и т.д. и т.п.

ustas 03.07.2012 06:28

теперь осталось сделать всё правильно :), вынести логику из jsp и тем самым соблюсти парадигму MVC :)
ну типа так кошерней будет

zwitter 03.07.2012 15:04

ох как я обожаю эти новомодные паттерны и парадигмы


Время на сервере: 08:34.

vBulletin 3, Copyright © 2000-2024, Jelsoft Enterprises Ltd.
Русский перевод: zCarot, Vovan & Co