在 C# 中使用 'Insert into' 命令时出现语法错误

Getting Syntax Error When using 'Insert into' command in c#

我在使用 C# 使用 'Insert into' SQL 命令时遇到语法错误。我正在使用 Access 数据库来存储一些数据。 令人惊讶的是,当我将确切的命令复制到 MS Access 中以尝试它是否不正确时,它就像魅力一样。我有点糊涂了!我很感激在这方面的任何想法或帮助。这是我的代码:

using (OleDbConnection connection = new OleDbConnection(Global.ConString))
            {
                using (OleDbCommand command = new OleDbCommand())
                {
                    command.Connection = connection;            
                    command.CommandType = CommandType.Text;
                    command.CommandText = "INSERT INTO Users(Name,UserName,Password,Customers,Jobs,Invoice,Statement,Reports,Users) values (@name,@UserName,@Password,@Customers,@Jobs,@Invoice,@Statement,@Reports,@Users)";

                    command.Parameters.AddWithValue("@name",fullName.Text );
                    command.Parameters.AddWithValue("@UserName", userName.Text);
                    command.Parameters.AddWithValue("@Password", passWord.Text);
                    command.Parameters.AddWithValue("@Customers", Customers.Checked);
                    command.Parameters.AddWithValue("@Jobs", Jobs.Checked);
                    command.Parameters.AddWithValue("@Invoice", Invoice.Checked);
                    command.Parameters.AddWithValue("@Statement", Statement.Checked);
                    command.Parameters.AddWithValue("@Reports", Report.Checked);
                    command.Parameters.AddWithValue("@Users", userDef.Checked);

                    try
                    {
                        connection.Open();
                        int recordsAffected = command.ExecuteNonQuery();
                        if (recordsAffected > 0)
                        {
                            foreach (Control item in newRecord.Controls)
                            {
                                if (item is TextBox) item.ResetText();
                            }
                            timer1.Enabled = true;

                        }
                        else
                            MessageBox.Show("Insert Fail");

                    }
                    catch (OleDbException err)
                    {

                        MessageBox.Show("Somthing wrong. Error no. is: " + err.ErrorCode + "..." + err.Message);
                    }
                }
            }

您的问题很可能是使用保留字作为标识符,特别是 'Password'。将该列名称括在方括号中,即 [Password],您应该可以开始了。

最好尽可能避免使用保留字。一般来说,您不应在数据库中存储未经哈希处理的密码,因此像“PasswordHash”这样的列名是合适的,可以避免此问题。