Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 03.08.2014
Сообщений: 12

Не добавляет значение в поле типа DateTime

06.03.2015, 11:22. Показов 981. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
БД создана в Access 2010.
Есть метод, который должен додавать новую запись в таблицу.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private bool AddNewSessionData(int CustomerID, SessionRec Data) 
{
        try
        {
            OleDbCommand add = new OleDbCommand(@"INSERT INTO Sessions (Subscriber,Day,TotalReceived,TotalSent,UAIXReceived,UAIXSent) VALUES (?,?,?,?,?,?)", _Connection);
            add.Parameters.AddWithValue("@Subscriber", CustomerID);
            add.Parameters.AddWithValue("@Day", Data.Date);
            add.Parameters.AddWithValue("@TotalReceived", Data.TotalReceived);
            add.Parameters.AddWithValue("@TotalSent", Data.TotalSent);
            add.Parameters.AddWithValue("@UAIXReceived", Data.UAIXReceived);
            add.Parameters.AddWithValue("@UAIXSent", Data.UAIXSent);
            add.ExecuteNonQuery();
            return true;
         }
         catch{
            return false;
        }
}
Вываливается с ошибкой
Ошибка синтаксиса в инструкции INSERT INTO.
Если убрать вставку поля Day то все работает нормально
так же не работает
C#
1
add.Parameters.Add("@Day", OleDbType.Date).Value = Data.Date;
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.03.2015, 11:22
Ответы с готовыми решениями:

Можно ли создать поле в таблице с именем datetime ? типа datetime
Добрый день ! вопрос почти чайника : Можно ли создать поле в таблице с именем datetime ? типа datetime есть в одной бд ms sql...

Поле типа DATETIME
Можно ли сделать between c датой, если формат строки TEXT и дата записанна в формате ДД.ММ.ГГГГ ЧЧ:ММ. Или всё таки нужно поле делать...

Не обновляется поле типа DATETIME MySQL
Добрый день, проблема в следующем. Есть 2 таблицы, в одной есть поле date с временной меткой, правда само поле имеет тип varchar(20). В...

11
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,911
06.03.2015, 12:06
Data.Date какого типа
0
0 / 0 / 0
Регистрация: 03.08.2014
Сообщений: 12
06.03.2015, 12:11  [ТС]
Цитата Сообщение от pincet Посмотреть сообщение
Data.Date какого типа
DateTime , создается через конструктор в другом месте...
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,911
06.03.2015, 12:13
полный текст ошибки давай.
0
0 / 0 / 0
Регистрация: 03.08.2014
Сообщений: 12
06.03.2015, 12:17  [ТС]
Кликните здесь для просмотра всего текста
System.Data.OleDb.OleDbException не обработано
HResult=-2147217900
Message=Ошибка синтаксиса в инструкции INSERT INTO.
Source=Microsoft Access Database Engine
ErrorCode=-2147217900
StackTrace:
в System.Data.OleDb.OleDbCommand.ExecuteCo mmandTextErrorHandling(OleDbHResult hr)
в System.Data.OleDb.OleDbCommand.ExecuteCo mmandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
в System.Data.OleDb.OleDbCommand.ExecuteCo mmandText(Object& executeResult)
в System.Data.OleDb.OleDbCommand.ExecuteCo mmand(CommandBehavior behavior, Object& executeResult)
в System.Data.OleDb.OleDbCommand.ExecuteRe aderInternal(CommandBehavior behavior, String method)
в System.Data.OleDb.OleDbCommand.ExecuteNo nQuery()
в DBInternet.DBAccess.AddNewSessionData(In t32 CustomerID, SessionRec Data) в D:\Online\Програми\Неля\DBInternet\DBInt ernet\DBAccess.cs:строка 213
в DBInternet.DBAccess.ImportData(Int32 CustomerID, Int32 Count, SessionRec[] Data) в D:\Online\Програми\Неля\DBInternet\DBInt ernet\DBAccess.cs:строка 228
в DBInternet.Form1.ImportFromExcel(String FileName) в D:\Online\Програми\Неля\DBInternet\DBInt ernet\Form1.cs:строка 41
в DBInternet.Form1.button1_Click(Object sender, EventArgs e) в D:\Online\Програми\Неля\DBInternet\DBInt ernet\Form1.cs:строка 82
в System.Windows.Forms.Control.OnClick(Eve ntArgs e)
в System.Windows.Forms.Button.OnClick(Even tArgs e)
в System.Windows.Forms.Button.OnMouseUp(Mo useEventArgs mevent)
в System.Windows.Forms.Control.WmMouseUp(M essage& m, MouseButtons button, Int32 clicks)
в System.Windows.Forms.Control.WndProc(Mes sage& m)
в System.Windows.Forms.ButtonBase.WndProc( Message& m)
в System.Windows.Forms.Button.WndProc(Mess age& m)
в System.Windows.Forms.Control.ControlNati veWindow.OnMessage(Message& m)
в System.Windows.Forms.Control.ControlNati veWindow.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.Debugg ableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
в System.Windows.Forms.UnsafeNativeMethods .DispatchMessageW(MSG& msg)
в System.Windows.Forms.Application.Compone ntManager.System.Windows.Forms.UnsafeNat iveMethods.IMsoComponentManager.FPushMes sageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
в System.Windows.Forms.Application.ThreadC ontext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
в System.Windows.Forms.Application.ThreadC ontext.RunMessageLoop(Int32 reason, ApplicationContext context)
в System.Windows.Forms.Application.Run(For m mainForm)
в DBInternet.Program.Main() в D:\Online\Програми\Неля\DBInternet\DBInt ernet\Program.cs:строка 18
в System.AppDomain._nExecuteAssembly(Runti meAssembly assembly, String[] args)
в System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
в Microsoft.VisualStudio.HostingProcess.Ho stProc.RunUsersAssembly()
в System.Threading.ThreadHelper.ThreadStar t_Context(Object state)
в System.Threading.ExecutionContext.RunInt ernal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(Ex ecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(Ex ecutionContext executionContext, ContextCallback callback, Object state)
в System.Threading.ThreadHelper.ThreadStar t()
InnerException:
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,911
06.03.2015, 12:18
Цитата Сообщение от Дюри Посмотреть сообщение
OleDbType.Date
C#
1
OleDbType.DateTime //как вариант
0
0 / 0 / 0
Регистрация: 03.08.2014
Сообщений: 12
06.03.2015, 12:21  [ТС]
Цитата Сообщение от pincet Посмотреть сообщение
OleDbType.DateTime //как вариант
нет такого типа.
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,911
06.03.2015, 12:26
думается мне что дело в формате даты access. Поиграйся с Date.ToLongDateString() Date.ToShortDateString()
0
0 / 0 / 0
Регистрация: 03.08.2014
Сообщений: 12
06.03.2015, 12:36  [ТС]
Цитата Сообщение от pincet Посмотреть сообщение
думается мне что дело в формате даты access. Поиграйся с Date.ToLongDateString() Date.ToShortDateString()
та вроде уже все возможные комбинации типов перебрал как в самом Access так и в проекте. Все равно не хочет работать. Работает только если сменить все дело на string, но сохранять дату в строках это ужас...

Добавлено через 3 минуты
А например такой код работает
C#
1
2
3
4
OleDbCommand find = new OleDbCommand(@"SELECT TOP 1 Code FROM Sessions WHERE (Day=?) AND (Subscriber=?)",_Connection);
find.Parameters.AddWithValue("@Day", Data.Date);
find.Parameters.AddWithValue("@Subscriber", CustomerID);
int index = Convert.ToInt32(find.ExecuteScalar());
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,911
06.03.2015, 12:38
в каком формате у тебя студия отображает Data.Date глянь
сравни с Data.Date.ToShortDate()
ибо идей, честно говоря больше нет
0
27 / 27 / 10
Регистрация: 18.08.2014
Сообщений: 212
06.03.2015, 15:07
Конечно может не в тему, НО! передача строки запроса в БД происходит в строке. Возможно нужно все значения заключить в 'value'.
Работая с ораклом, тоже сталкивался с таким косяком при передаче int переменной, и числа в string формате.
а лучше сделать не параметрезированный запрос, аля:
C#
1
string querySTR = String.Format(@"insert into Sessions (Subscriber,Day,TotalReceived,TotalSent,UAIXReceived,UAIXSent) values('{0}','{1}','{2}','{3}','{4}','{5}')", CustomerID, Data.Date, Data.TotalReceived, Data.TotalReceived, Data.TotalSent, Data.UAIXReceived, Data.UAIXSent);
А для начала лучше проверяй SQL запрос непосредственно в менеджере БД, чтоб наверняка. Потом ставь точки останова и смотри, как формируется твоя строка с запросом.
0
0 / 0 / 0
Регистрация: 03.08.2014
Сообщений: 12
06.03.2015, 18:03  [ТС]
Спасибо всем за помощь. Оказывается Day зарезервированное слово в Access для полей типа дата/время, просто поле переназвал и все заработало...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.03.2015, 18:03
Помогаю со студенческими работами здесь

Поиск в БД (dbf) по времени и дате в поле типа DateTime
ЛЮДИ, ПОМОГИТЕ ПОЖАЛУЙСТА!МНЕ НУЖНО СДЕЛАТЬ ТАК ЧТОБ ОРГАНИЗОВАТЬ ФИЛЬТРАЦИЮ ПО ВРЕМЕНИ И ДАТЕ ОДНОВРЕМЕННО. Мне нужно сделать так,...

Как отбросить время в поле типа datetime (подробнее внутри!!!)
Как отбросить время в поле типа datetime Что-то меня клинит или кроме как SELECT...

Не читается значение типа datetime
Доброго времени суток! Пишу программу для Windows, которая работает с базой данных автозапчастей TecDoc. Вкратце: устанавливаю базу...

Как вставить в поле DateTime значение null?
Ребят подскажите пожалуйста. Из датасета хочу вставить данные в базу. foreach (DataRow row in dataset.Tables.Rows) ...

Как присвоить значение переменной типа DateTime
Подскажите пожалуйста, как присвоить значение переменной типа DateTime ? DateTime hiredateBoss;


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru