2015-09-05 4 views
1

Я пытаюсь вставить некоторые значения в таблице пользователей, есть 4 атрибутов вошибка синтаксиса в инструкции INSERT INTO заявления

User-User_Name varchar(20) 
User_Password varchar(20) 
Entry_Date timestamp 
Entry_Time timestamp 

Я пробовал много, но я не в состоянии выяснить проблему.

using (OleDbConnection connection = new OleDbConnection(cs)) 
{ 

    string cb1 = "INSERT INTO User([User_Name],[User_Password],[Entry_Date],[Entry_Time]) VALUES (@val1,@val2,@val3,@val4)"; 

    using (OleDbCommand comm = new OleDbCommand(cb1, connection)) 
    { 
     connection.Open(); 
     comm.Parameters.AddWithValue("@val1", txtUserName.Text); 
     comm.Parameters.AddWithValue("@val2", txtPassword.Text); 
     comm.Parameters.AddWithValue("@val3", DateTime.Now.ToString("d")); 
     comm.Parameters.AddWithValue("@val4", DateTime.Now.ToString("t")); 

     comm.ExecuteNonQuery(); 
    } 
} 
+1

Какое ваше исключение точно? – Arash

+0

«Пользователь» - это зарезервированное слово с Access/oldDB – Plutonix

+1

Попробуйте просто 'DateTime.Now' - вы теперь strying для хранения строкового значения в столбце timestamp –

ответ

0

Пользователь является зарезервированным ключевым словом в transact sql. Закрепите его в квадратных скобках, например INSERT INTO [Пользователь] ....

+0

спасибо, я получил его –

0

USER является reserved keyword в OLE DB Provider. Вам нужно использовать его с квадратными скобками, например [USER] Я знаю, что User и USER не совпадают, но это означает, что ваш сервер базы данных не чувствителен к регистру для этих параметров.

Ваши Entry_Date и Entry_Time столбцы timestamp, но вы пытаетесь добавить строковые представления ваших DateTime частей.

Лучший способ изменить Entry_Date столбец Date типа и обеспечивают эти столбцы текущее местное время с их .Date и .TimeOfDay свойствами.

И не используйте метод AddWithValue. It may generate unexpected results sometimes. Используйте метод перегрузки Add, чтобы указать тип параметра и его размер.

За последнее время do не сохранить пароли как обычный текст. Прочитано Best way to store password in database

using (var connection = new OleDbConnection(cs)) 
using (var comm = new connection.CreateCommand()) 
{ 
    comm.CommandText = @"INSERT INTO [User]([User_Name],[User_Password],[Entry_Date],[Entry_Time]) 
         VALUES (@val1,@val2,@val3,@val4)" 
    comm.Parameters.Add("@val1", txtUserName.Text); 
    comm.Parameters.Add("@val2", txtPassword.Text); 
    comm.Parameters.Add("@val3", DateTime.Now.Date); 
    comm.Parameters.Add("@val4", DateTime.Now.TimeOfDay); 

    connection.Open(); 
    comm.ExecuteNonQuery(); 
} 
+0

большое спасибо soner , он работает.Спасибо за предложения .. Ты лучший !!!!!!!!!! :) –

+0

@ArianSajid Рад помочь. –

Смежные вопросы