2013-03-04 4 views
0

, поэтому я работаю над программой базы данных, и для этого требуется вставить журнал в базу данных с помощью команды INSERT INTO, однако после выполнения запроса таблица остается пустой. Пожалуйста помоги! Спасибо ~ Вот коды.C# `INSERT INTO` MS Access db не вставляет

//Predefined connection string 
    OleDbConnection vcon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\xxx\Desktop\data.mdb;Jet OLEDB:Database Password=xxx;"); 




    private void Login_Load(object sender, EventArgs e) 
    { 
     Log("StartUp", "System", "NULL", "System StartUp"); 
    } 

    public void Log(string Type, string User, string Table_affected, string Remarks) 
    { 

     string NowDateStamp = string.Format("{0}/{1}/{2}", 
           DateTime.Now.Day.ToString(), 
           DateTime.Now.Month.ToString(), 
           DateTime.Now.Year.ToString()); 
     string NowTimeStamp = string.Format("{0}:{1}:{2}", 
           DateTime.Now.Hour.ToString(), 
           DateTime.Now.Minute.ToString(), 
           DateTime.Now.Second.ToString()); 
     string tempSQL = string.Format("INSERT INTO 'Log' VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}')", 
             NowDateStamp, 
             NowTimeStamp, 
             Type, 
             User, 
             Table_affected, 
             Remarks); 
     vcon.Open(); 
     OleDbCommand vcom = new OleDbCommand(tempSQL, vcon); 
     vcom.ExecuteNonQuery(); 
     MessageBox.Show("Done"); // <-- This MessageBox isn't even showing. 
     vcon.Close(); 
    } 

Так в основном программа запускается залогирует время, однако это не казалось, сделали ничего к базе данных, кто может помочь мне? Благодаря!

+0

Вы видите ошибки во время выполнения? Также вам нужно использовать Access - SQLServer CE4.0 - отличная альтернатива? –

+0

Запуск в режиме отладки, предполагая, что там где-то есть ошибка, если бы вы получили сообщение, как вы указали. –

+0

Для временных меток вы можете просто использовать 'var nowDateStamp = DateTime.Now.ToString (" dd/MM/yyyy ");' и 'var nowTimeStamp = DateTime.Now.ToString (" HH: mm: ss ");' , на самом деле не связан с вашим вопросом, но может сделать ваш код более удобочитаемым =) – JMK

ответ

6

Выполнение запроса вызывает исключение, но где-то это исключение поймано и проигнорировано.

Вы используете строковый литерал, в котором должно быть имя таблицы. Он должен быть либо только идентификатор:

INSERT INTO Log VALUES ... 

или идентификатор в квадратных скобках:

INSERT INTO [Log] VALUES ... 
+0

+1 - Однако я бы рекомендовал всегда использовать квадратные скобки. В любом случае вам понадобятся зарезервированные слова и имена столбцов с пробелами, поэтому я всегда буду делать это для согласованности – JMK

0

Заменить это:

INSERT INTO 'Log' VALUES 

С этим:

INSERT INTO Log VALUES 
+0

Прошу прощения, я выяснил, что сам запрос в порядке, однако, поскольку таблица имеет свой собственный первичный ключ, так что вставка в таблицу будет 7 элементов вместо 6. Поэтому я удалил первичный ключ, и теперь все в порядке. =] Спасибо за помощь! знак равно – 2013-03-04 15:34:25

0

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

INSERT INTO Log (<column1>,<column2>,...) 
VALUES (<Value to insert into column1>, <Value to insert into column 2>,...)