Oledb executenonquery 函数没有将所有数据插入数据库

问题描述 投票:0回答:1

尝试使用 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();`

Here is what the data looks like (excuse the multiple entries of the same data)

感谢您的宝贵时间!

c# sql ms-access oledbcommand oledbexception
1个回答
0
投票

如果存在语法错误,那几乎可以肯定是因为您使用了保留字作为标识符。我敢肯定,如果您看的话,您可以找到一个 Access 保留字列表,但根据您的解释,它很可能是

Image
和/或
Description
。将这些标识符包裹在方括号中

, [Image], Manufacturer, [Description])

你应该可以开始了。您可以单独尝试每一个,看看它是否只是其中之一 -

Image
几乎肯定是一个问题,但不确定
Description
。请注意,您始终可以将所有标识符放在方括号中,这样您就永远不会遇到这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.