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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MS Access DB проблема с записью польей Дата/Время, все вариаты пробовал. 
V
    Опции темы
bytes
Дата 22.5.2008, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

            string commandStr = "INSERT INTO User(name, surname, age, year) VALUES('Naila', 'Panova', 25, #10/11/1998#)";

            System.Data.OleDb.OleDbCommand command = connect.CreateCommand();
            command.CommandText = commandStr;
            command.CommandType = System.Data.CommandType.Text;
            command.ExecuteNonQuery();

            command.Dispose();
            connect.Close();

Ошибка синтаксиса в инструкции INSERT INTO.
year: #10/11/1998#, #10/11/1998 10:20:10#, #10/11/1998 10:20:10 PM#

результат тот же.
Помогите.
--------------------
?==! or !==?
PM MAIL ICQ MSN   Вверх
bytes
Дата 22.5.2008, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Региональный данные: Английский (США)
--------------------
?==! or !==?
PM MAIL ICQ MSN   Вверх
jonie
Дата 22.5.2008, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



непосредственно в аксесе посмотрите справку по функциям работы с датой... там был перевод из читабельного (yyyyMMdd) в "местный"... ну и вообще попробуйте погуглить на sql.ru


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Rififi
Дата 22.5.2008, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

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



Цитата(bytes @  22.5.2008,  22:35 Найти цитируемый пост)
string commandStr = "INSERT INTO User(name, surname, age, year) VALUES('Naila', 'Panova', 25, #10/11/1998#)";

потому что не надо использовать непосредственное задание значений в sql-строке.
курим про параметры команды.
PM MAIL   Вверх
bytes
Дата 23.5.2008, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Rififi @ 22.5.2008,  23:32)
потому что не надо использовать непосредственное задание значений в sql-строке.
курим про параметры команды.

пример плз.
--------------------
?==! or !==?
PM MAIL ICQ MSN   Вверх
Rififi
Дата 23.5.2008, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

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



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


Шустрый
*


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

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



Не помогло.
По всем полям создать параметр или только для даты? (одно или 4 знака ? в INSERT INTO)
Добавили параметр, а значение для стольбец даты определяем так: (?)
Код

command.Parameters["year"].Value = "1998/10/11";

--------------------
?==! or !==?
PM MAIL ICQ MSN   Вверх
bytes
Дата 23.5.2008, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код


            System.Data.OleDb.OleDbCommand command = connect.CreateCommand();
            command.CommandText = "INSERT INTO MAN(name, surname, age, year) VALUES(@name, @surname, @age, @year)";
            command.CommandType = System.Data.CommandType.Text;
            command.Parameters.Add("@name", System.Data.OleDb.OleDbType.Char, 15);
            command.Parameters.Add("@surname", System.Data.OleDb.OleDbType.Char, 15);
            command.Parameters.Add("age", System.Data.OleDb.OleDbType.UnsignedInt, 5);
            command.Parameters.Add("year", System.Data.OleDb.OleDbType.DBDate, 10);

            command.Prepare();

            command.Parameters["name"].Value = "Asif";
            command.Parameters["surname"].Value = "Bagiov";
            command.Parameters["age"].Value = 32;
            command.Parameters["year"].Value = DateTime.Now;


            command.ExecuteNonQuery();


command.Prepare(): Ошибка синтаксиса в инструкции INSERT INTO.

Это сообщение отредактировал(а) bytes - 23.5.2008, 09:52
--------------------
?==! or !==?
PM MAIL ICQ MSN   Вверх
EAV
Дата 23.5.2008, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



bytes,  на сколько я в курсе Access использует параметры по порядку, а не по именам...
поэтому лично я использую так:
Код

con = new OleDbConnection([моя строка подключения]);
cmd = new OleDbCommand();
cmd.Connection = con;
//но думаю и так тоже можно: OleDbCommand cmd = con.CreateCommand();
cmd.CommandText = "Insert Into MAN(name, surname, age, year) Values (?, ?, ?, ?)";

cmd.Parameters.Clear();
cmd.Parameters.Add("1", OleDbType.Char).Value = "Asif";
cmd.Parameters.Add("2", OleDbType.Char).Value = "Bagiov";
cmd.Parameters.Add("3", OleDbType.Integer).Value = 32;
cmd.Parameters.Add("4", OleDbType.DBDate).Value = DateTime.Now;

cmd.ExecuteNonQuery();


но если вопросы не нравяться, то можно и так (но никакого выигрыша не получается, единственное удобнее читать):
Код

con = new OleDbConnection([моя строка подключения]);
cmd = new OleDbCommand();
cmd.Connection = con;
//но думаю и так тоже можно: OleDbCommand cmd = con.CreateCommand();
cmd.CommandText = "Insert Into MAN(name, surname, age, year) Values (@name, @surname, @age, @year)";

cmd.Parameters.Clear();
cmd.Parameters.Add("@name", OleDbType.Char).Value = "Asif";
cmd.Parameters.Add("@surname", OleDbType.Char).Value = "Bagiov";
cmd.Parameters.Add("@age", OleDbType.Integer).Value = 32;
cmd.Parameters.Add("@year", OleDbType.DBDate).Value = DateTime.Now;

cmd.ExecuteNonQuery();


PS bytes, у тебя же ошибка скорее всего из-за того, что ты забыл символ @ при создании параметров... 

Это сообщение отредактировал(а) EAV - 23.5.2008, 11:14
PM MAIL   Вверх
bytes
Дата 23.5.2008, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код


            string commandStr = "INSERT INTO MAN(name, surname, age, year) VALUES(@name, @surname, @age, @year)";

            System.Data.OleDb.OleDbConnection
                connect = new System.Data.OleDb.OleDbConnection("provider=Microsoft.JET.OLEDB.4.0; data source=DB.mdb");
            connect.Open();



            System.Data.OleDb.OleDbCommand command = new System.Data.OleDb.OleDbCommand();  // connect.CreateCommand();
            command.Connection = connect;
            command.CommandText = commandStr;
            //command.CommandType = System.Data.CommandType.Text;

            command.Parameters.Clear();
            command.Parameters.Add("@name", System.Data.OleDb.OleDbType.Char).Value = "Asif";
            command.Parameters.Add("@surname", System.Data.OleDb.OleDbType.Char).Value = "Bagirov";
            command.Parameters.Add("@age", System.Data.OleDb.OleDbType.Integer).Value =32;
            command.Parameters.Add("@year", System.Data.OleDb.OleDbType.DBDate).Value = DateTime.Now;

            //command.Prepare();

            command.ExecuteNonQuery(); 
                       
            //command.Dispose();
            connect.Close();

результат тот же.
может что из акссеса надо менять... например: формат ?
--------------------
?==! or !==?
PM MAIL ICQ MSN   Вверх
Rififi
Дата 23.5.2008, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

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



работающий пример:

Код
public void TestInsert()
{
    try
    {
        DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb");
        using (DbConnection cnn = factory.CreateConnection())
        {
            string dbFile = @"C:\Documents and Settings\User\My Documents\База данных1.accdb";
            cnn.ConnectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""{0}"";Persist Security Info=False;", dbFile);
            cnn.Open();

            using (DbCommand cmd = factory.CreateCommand())
            {
                cmd.Connection = cnn;
                cmd.CommandText = "INSERT INTO `Таблица1` (`Дата`) VALUES(?)";
                cmd.Parameters.Add(new OleDbParameter("data", OleDbType.Date));
                cmd.Parameters[0].Value = DateTime.Now;
                cmd.ExecuteNonQuery();
            }
        }
    }
    catch (Exception e)
    {
        Console.WriteLine(e.Message);
    }
}


структура таблицы:
user posted image

Результат:
user posted image
PM MAIL   Вверх
bytes
Дата 23.5.2008, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спосибо. Благадарень!
Почему так работает, а `классик` варианте нет. smile 
--------------------
?==! or !==?
PM MAIL ICQ MSN   Вверх
Rififi
Дата 23.5.2008, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

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



Цитата(bytes @  23.5.2008,  15:42 Найти цитируемый пост)
Почему так работает, а `классик` варианте нет

не задумывался об этом. просто юзаю то, что работает (:
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

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

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

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


 




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


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

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