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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MySQL и вставка полей типа Date, DateTime, Вставляет не те даные  
:(
    Опции темы
AntonVolnikh
Дата 29.6.2008, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем доброго времени суток!
При вставки или апдейте запаписи  собержащей поля то типа Date после выполнения в базе 
оказывается запись со значением этого поля равным 0000-00-00 хотя я вставляю конкретные данные.
С базой работаю через грид.

Код


this.cmdInsert.CommandText = "INSERT INTO TABLE1(FIELD1) VALUES (@DT)";
this.cmdInsert.Parameters.Add("@DT", MySqlDbType.DateTime, 0, "DT").SourceVersion = DataRowVersion.Current;



Поделитесь пожалуйсто советом в чём может быть причина.
PM MAIL   Вверх
Idsa
Дата 29.6.2008, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

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



AntonVolnikh, не знаю, какой Вы провайдер используете... но по-моему в мускуловских провайдерах для параметров используется не @, а какой-то другой символ.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
AntonVolnikh
Дата 30.6.2008, 06:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Idsa  Я использую mysql connector .net v5.2.2. Праблем с работай с дполями другого типа нет и 
для них я тоже использую параметры с префиксом @ так что праблема в чём то другом.
PM MAIL   Вверх
Idsa
Дата 30.6.2008, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

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



AntonVolnikh, попытка №2 smile
Вызывает недоумение третий параметр в методе Parameters.Add. Size не может быть равен 0.
Воспользуйтесь другим перегруженным вариантом этого метода:
Цитата

public SqlParameter Add(
    string parameterName,
    SqlDbType sqlDbType
)

вот так:
Код

this.cmdInsert.Parameters.Add("@DT", MySqlDbType.DateTime).SourceVersion = DataRowVersion.Current;



--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
AntonVolnikh
Дата 30.6.2008, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Idsa Я пробовал разные варианты для  параметра size в инете нашёл варианты где он 
равен 8 (как тип System.DataTime) 
Код

this.cmdInsert.Parameters.Add("@DT", MySqlDbType.Date, 8,"DT").SourceVersion = DataRowVersion.Current;

но результат тотже всё равно фигню пишет в базу.

PM MAIL   Вверх
Idsa
Дата 30.6.2008, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

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



AntonVolnikh, забудьте вообще про Size. Его имеет смысл использовать только для типов вроде varchar(size).
С перегрузкой, которую я указал, тоже не работает?


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
AntonVolnikh
Дата 30.6.2008, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Idsa написал как вы сказали 
Код

this.cmdInsert.Parameters.Add("@DT", MySqlDbType.DateTime);
this.cmdInsert.Parameters["@DT"].SourceColumn = "DT";
this.cmdInsert.Parameters["@DT"].SourceVersion = DataRowVersion.Current;

но результат тодже самый "0000-00-00"
PM MAIL   Вверх
Idsa
Дата 30.6.2008, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

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



Как я сразу-то не заметил?! Вы же не присваиваете параметру значение.
Код

this.cmdInsert.Parameters["@DT"].Value = dateTime;

, где dateTime - переменная типа DateTime.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
AntonVolnikh
Дата 30.6.2008, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Idsa Я же связываю параметр @DT со столбцом грида DT так что мне не нужно 
не чего ему присваевать.
PM MAIL   Вверх
Idsa
Дата 30.6.2008, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

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



AntonVolnikh, видимо, проблема именно с привязкой.
Покажите больше кода: заполнение грида, привязка и т. д.
Кстати по умолчанию SourceVersion равен Current, так что эту строчку можно убрать.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
AntonVolnikh
Дата 30.6.2008, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Idsa опять же говорю проблем с привязкой нет так как остальные поля содятся правильно 
а вот DateTime водятся криво.Так же на событие RowUpdating адаптера посадил следующий код для
праверки правельности заполнения параметра @DT
Код


        private void adapResCards_RowUpdating(object sender, MySqlRowUpdatingEventArgs e)
        {
            MessageBox.Show(e.Command.Parameters["@DT"].Value.ToString());
        }


Выводит то значение  которое я указал в гриде так что всё праильно с привязкой.

PM MAIL   Вверх
Idsa
Дата 30.6.2008, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

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



AntonVolnikh, а в базе тип Date или DateTime?


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
AntonVolnikh
Дата 30.6.2008, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Date
PM MAIL   Вверх
Idsa
Дата 30.6.2008, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

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



AntonVolnikh, может, провайдер не умеет конвертить DateTime в Date...
С SqlServer'ом в этом плане проще: там нет типов Date и Time, есть только DateTime.
В каком формате дата хранится в гриде?


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Idsa
Дата 30.6.2008, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

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



Можно попробовать изменить в базе тип на DateTime. Если заработает, значит дело точно в провайдере.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

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

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

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


 




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


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

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