OleDB异常-C#

OleDB异常-C#,c#,ms-access,C#,Ms Access,我有下面的连接代码来访问数据库。我可以调试并查看连接字符串和参数值,但在myAccessCommand.ExecuteNonQuery() 访问表定义为: 我不知道问题出在哪里 您能否从您的代码中向我们展示模型的类别/类型?AddWithValue是引发此类问题的最佳选择。它创建一个参数,其数据类型根据给定的值推断。如果参数数据类型与列类型不匹配,将进行大量转换。使用Add方法而不是AddWithValue,或者仔细检查您的inputsiirc您不能使用命名占位符(@XXX)尝试将字符串中的占

我有下面的连接代码来访问数据库。我可以调试并查看连接字符串和参数值,但在
myAccessCommand.ExecuteNonQuery()

访问表定义为:


我不知道问题出在哪里

您能否从您的代码中向我们展示
模型的类别/类型
?AddWithValue是引发此类问题的最佳选择。它创建一个参数,其数据类型根据给定的值推断。如果参数数据类型与列类型不匹配,将进行大量转换。使用Add方法而不是AddWithValue,或者仔细检查您的inputsiirc您不能使用命名占位符(
@XXX
)尝试将字符串中的占位符替换为
值(?,,,,…
并使用
myAccessCommand.Parameters.AddWithValue(model.entity.Name);
的顺序正确。@AlexK.-System.Data.OleDb允许使用命名占位符,但仍将其视为严格的位置占位符,因此建议使用
占位符,但不是严格要求的。
using (OleDbConnection thisConnection = new OleDbConnection(connectionname))
            {
                string query = "INSERT INTO HornerPluginResults([Entity],[Date],[Depth],[FormationTemp])VALUES(@Entity,@Date,@Depth,@FormationTemp)";
                OleDbCommand myAccessCommand = new OleDbCommand(query, thisConnection);

                myAccessCommand.Parameters.AddWithValue("@Entity", model.entity.Name);
                myAccessCommand.Parameters.AddWithValue("@Date", model.TableResults[0].todaydate);
                myAccessCommand.Parameters.AddWithValue("@Depth", model.Depth);
                myAccessCommand.Parameters.AddWithValue("@FormationTemp", formationtemp);
                thisConnection.Open();
                myAccessCommand.ExecuteNonQuery();
            }