powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Ошибка при insert'е даты в DBF-файл (C#)
3 сообщений из 3, страница 1 из 1
Ошибка при insert'е даты в DBF-файл (C#)
    #37467644
igor_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Появилась необходимость залить данные в DBF файл (FoxBASE+/Dbase III plus, no memo).
Insert выполняется нормально для text и smallint полей, но для даты (date) постоянно вылетает ошибка.
Пробывал разные провайдеры - все равно та же ошибка...

Вот варианты:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DateTime myDate = DateTime.Now;

using (OdbcConnection conn = new OdbcConnection(@"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=db\myDb;"))
{
   conn.Open();

   OdbcCommand cmd = new OdbcCommand("INSERT INTO 1.dbf (date) VALUES(?)", conn);

   cmd.Parameters.Add("", OdbcType.Date).Value = myDate;

   cmd.ExecuteNonQuery();
}

либо так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
using (OdbcConnection conn = new OdbcConnection(@"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=db\myDb;"))
{
   conn.Open();

   OdbcCommand cmd = new OdbcCommand("INSERT INTO 1.dbf (date) VALUES({d 2011-01-01})", conn);

   cmd.Parameters.Add("", OdbcType.Date).Value = myDate;

   cmd.ExecuteNonQuery();
}

то же для OLE DB...

OdbcDbException: ERROR [42000] [Microsoft][Драйвер ODBC dBase] Ошибка синтаксиса в инструкции INSERT INTO.

или

OleDbException: Ошибка синтаксиса в инструкции INSERT INTO.

В доках ничего не могу найти!

В чем причина? Как правильно запихнуть поле типа date в DBF-базу? Может дело в провайдере?
Заранее благодарен!
...
Рейтинг: 0 / 0
Ошибка при insert'е даты в DBF-файл (C#)
    #37467727
igor_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот с таким провайдером дату пропускает, но ругаться на null стал!

Код: plaintext
1.
using (OleDbConnection conn = new OleDbConnection(@"Provider=vfpoledb.1;Data Source=db\myDb;Exclusive=false;Nulls=false"))
            

Модератор: Тема перенесена из форума "IBM DB2, WebSphere, IMS, U2, etc".
...
Рейтинг: 0 / 0
Ошибка при insert'е даты в DBF-файл (C#)
    #37503771
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если по английски читать умеете, то ответ тут:
click

авторThis code will insert a FoxPro Date value but not a DateTime value.

First, be sure to verfiy whether you've got a Date or DateTime value in the FoxPro table. Using SQL Pass-through, for a DateTime value you can use DToT (Date to Time), or write the DateTime value in the correct format:

Insert Into MyTable Values (DToT{^2006/02/20})

Insert Into MyTable Values ({^2006/02/20 20:33:19})

Even so, you'll always be better off with a parameterized Insert statement as PJ. suggested. That way OLE DB takes care of "translating" the data value.

One more thing - I see you've got a T as your last parameter. Are you trying to represent "True?" If that is the case, FoxPro Logical (Boolean) values are written in text as .T. and .F. and Null is written as .NULL. .

Insert Into [5.dbf] values ({^2006/02/20 20:33:19}, 'leton', 23, 'question', .T.)

Oh - and I see you've got Insert Into [5.dbf]... Is "[5.dbf]" the name of the table? In SQL Pass-through a table is usually represented by it's name only, without the DBF extension. Also, Fox tables must begin with an alpha character or an underscore. Digits can only be used after the first character. Even though you may be able to use a non-standard table name, if you have the abililty to change the name of this table you should do so.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Ошибка при insert'е даты в DBF-файл (C#)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]