在 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”这样的列名是合适的,可以避免此问题。
我在使用 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”这样的列名是合适的,可以避免此问题。