INSERT INTO语句中的语法错误

时间:2015-09-05 19:03:44

标签: c# sql database visual-studio-2012 oledb

我试图在User表中插入一些值,

中有4个属性
<td>{{ $project->client->clientName }}</td>

我已经尝试了很多,但我无法找到问题所在。

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

2 个答案:

答案 0 :(得分:0)

User是transact sql中的保留关键字。将它括在方括号中,如INSERT INTO [User] ....

答案 1 :(得分:0)

USER是OLE DB提供程序中的reserved keyword。您需要使用方括号,例如[USER]我知道UserUSER不一样,但这意味着您的数据库服务器对此选项不区分大小写。

您的Entry_DateEntry_Time列为timestamp,但您尝试添加DateTime部分的字符串表示。

最好的方法是将您的Entry_Date列更改为Date类型,并将这些列与当前.Date.TimeOfDay属性一起提供当前当地时间。

并且不要使用AddWithValue方法。 It may generate unexpected results sometimes。使用Add方法重载来指定参数类型及其大小。

最后,将密码保存为纯文本。阅读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();
}