尝试使用 C# 将值插入到 Access 数据库中,但仅插入了部分数据。数据库中的所有数据类型和 C# 代码都是正确的。
下面的代码给出了这个错误:“INSERT INTO 语句中的语法错误”。
string insertStatement =
"INSERT INTO Car (Category, Model, CarYear, Mileage, CostPerDay, Availability, Location, Image, Manufacturer, Description) " +
"VALUES (@Category, @Model, @CarYear, @Mileage, @CostPerDay, @Availability, @Location, @Image, @Manufacturer, @Description)";
OleDbConnection connection = new OleDbConnection(CarRentalDB.ConnectionString);
OleDbDataAdapter adapter = new OleDbDataAdapter(insertStatement, connection);
OleDbCommand command = new OleDbCommand(insertStatement, connection);
command.Parameters.AddWithValue("@Category", car.category.ToString());
command.Parameters.AddWithValue("@Model", car.model);
command.Parameters.AddWithValue("@CarYear", car.year);
command.Parameters.AddWithValue("@Mileage", car.mileage);
command.Parameters.AddWithValue("@CostPerDay", car.costPerDay);
command.Parameters.AddWithValue("@Availability", car.availability);
command.Parameters.AddWithValue("@Location", car.location);
command.Parameters.AddWithValue("@Image", car.image);
command.Parameters.AddWithValue("@Manufacturer", car.manufacturer);
command.Parameters.AddWithValue("@Description", car.description);
connection.Open();
command.ExecuteNonQuery();
}`
但是,如果我去掉 Image、Manufacturer 和 Description,那么它会毫无错误地执行。下面是不返回错误且仅插入部分数据的代码: `
string insertStatement = "Insert INTO CAR (Category, Model, CarYear, Mileage, CostPerDay, Availability, Location)" +
" VALUES (@Category, @Model, @CarYear, @Mileage, @CostPerDay, @Availability, @Location)";
OleDbConnection connection = new OleDbConnection(CarRentalDB.ConnectionString);
OleDbDataAdapter adapter = new OleDbDataAdapter(insertStatement, connection);
OleDbCommand command = new OleDbCommand(insertStatement, connection);
command.Parameters.AddWithValue("@Category", car.category.ToString());
command.Parameters.AddWithValue("@Model", car.model);
command.Parameters.AddWithValue("@Category", car.category.ToString());
command.Parameters.AddWithValue("@Model", car.model);
command.Parameters.AddWithValue("@CarYear", car.year);
command.Parameters.AddWithValue("@Mileage", car.mileage);
command.Parameters.AddWithValue("@CostPerDay", car.costPerDay);
command.Parameters.AddWithValue("@Availability", car.availability);
command.Parameters.AddWithValue("@Location", car.location);
connection.Open();
command.ExecuteNonQuery();`
感谢您的宝贵时间!
如果存在语法错误,那几乎可以肯定是因为您使用了保留字作为标识符。我敢肯定,如果您看的话,您可以找到一个 Access 保留字列表,但根据您的解释,它很可能是
Image
和/或Description
。将这些标识符包裹在方括号中
, [Image], Manufacturer, [Description])
你应该可以开始了。您可以单独尝试每一个,看看它是否只是其中之一 -
Image
几乎肯定是一个问题,但不确定 Description
。请注意,您始终可以将所有标识符放在方括号中,这样您就永远不会遇到这个问题。