解决“条件表达式中的数据类型不匹配”。在MS Access Insert.Into期间

Xellarant

我正在创建一个基本的客户清单应用程序,将代码从使用SQL Server转换为使用MS Access(我不太了解)时,在尝试执行此操作时遇到了“数据类型不匹配”错误基本插入。

我在这里研究了几个类似的问题,并仔细检查了msdn语法指南,但找不到我编写的脚本会产生该错误的原因。我多次更改代码以尝试确保正确的数据类型(最后通过显式键入并在后面添加值来完成下面的内容)。实际上,我什至将字符串带入并粘贴到MS Access(没有空格和双引号)中,并且看起来可以很好地使用给定的值。在这一点上,我确实感到非常困惑,我想知道它是否可能是Oledb适配器的怪癖?任何帮助,将不胜感激。谢谢。

// SQL query defined elsewhere:
public static readonly string sqlAddCustomerNotes = "INSERT INTO CustomerNotes (Customer_ID, Notes, NotesDate) "
            + "VALUES(@Customer_ID, @Notes, @NotesDate);";
// end sql query

// data access function
public static void addNotes(int customerID, string notes, DateTime notesDate)
        {
            string query = Scripts.sqlAddCustomerNotes;
            using (
                OleDbCommand dbCommand = new OleDbCommand()
                {
                    Connection = new OleDbConnection(ConnectionAccess.connString),
                    CommandType = CommandType.Text,
                    CommandText = query,
                    Parameters =
                        {
                            new OleDbParameter("@Customer_ID", OleDbType.Integer),
                            new OleDbParameter("@Notes", OleDbType.LongVarChar),
                            new OleDbParameter("@NotesDate", OleDbType.DBTimeStamp)
                        }
                }) // end using parenthetical
            { // begin using scope
                dbCommand.Parameters[0].Value = customerID;
                dbCommand.Parameters[1].Value = notes;
                dbCommand.Parameters[2].Value = notesDate;
                foreach (OleDbParameter param in dbCommand.Parameters)
                { // replace ambiguous null values with explicit DBNulls.
                    if (param.Value == null)
                    {
                        param.Value = DBNull.Value;
                    }
                }
                dbCommand.Connection.Open();
                int rowsAffected = dbCommand.ExecuteNonQuery();
                dbCommand.Connection.Close();
                Console.WriteLine($"Rows affected: {rowsAffected}");
            }
        } // end addCustomerNotes
/*
table "CustomerNotes" has the following columns:datatypes
    CustomerNotes_ID: AutoNumber
    Customer_ID: Number
    Notes: Memo
    NotesDate: Date/Time
    CreateDate: Date/Time

test case (in code) was:
    @Customer_ID = 5
    @Notes = "customer might change last name to simpson."
    @NotesDate = {6/26/2019 12:05:39 PM}
*/
Xellarant

考虑到June7关于定界符的评论,看来问题出在该OleDbParameter类型固有的某个问题上用SQL Server术语来说,我确实想要DateTime(不是Date),但是将其表示为DBTimeStamp似乎使Access无法识别它。

目前,我已将日期发送为,VarChar并允许Access对其进行转换,但是其内部引擎认为合适。感觉/似乎是错误的,但实际上可以解决问题。

Parameters =
                        {
                            new OleDbParameter("@Customer_ID", OleDbType.Integer),
                            new OleDbParameter("@Notes", OleDbType.LongVarChar),
                            new OleDbParameter("@NotesDate", OleDbType.VarChar)
                        }

编辑:刚刚看到June7的最新评论,并且实际上在另一个主题中有一个答案OleDbType.DBDate不做我想要的,但是OleDbType.Date做。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何解决MS Access 2010中的“条件表达式中的数据类型不匹配”错误?

MS-Access SQL中的“条件表达式中的数据类型不匹配”

条件表达式 ms-access c# 中的数据类型不匹配

Access查询后“条件表达式中的数据类型不匹配”

在 MS Access 中保存来自 VB.Net Windows 窗体的数据,出现错误 System.Data.OleDb.OleDbException:“条件表达式中的数据类型不匹配。”

“条件表达式中的数据类型不匹配。” ms access中的错误,我做了建议的所有故障排除

将记录从C#保存到Access时“条件表达式中的数据类型不匹配”

如何在使用 MS Access 和 OleDb 连接的 Insert Into 命令期间返回主键值?

Access中的数据类型不匹配

在执行INSERT INTO时如何在SELECT语句期间创建数据?

“条件表达式中的数据类型不匹配”

INSERT INTO语句以匹配行-MS Access SQL

SQL查询中的MS Access VBA数据类型不匹配错误

CRITERIA EXPRESSION中的数据类型不匹配错误(ms Access)

Swift中递归调用期间的BAD_ACCESS

数据类型不匹配Access 2010

C# 和 ms 数据库 - 条件表达式中的数据类型不匹配

LabVIEW数据库查询中“条件表达式中的数据类型不匹配”

MS Access INSERT不使用输入

查询访问数据库时条件表达式中的数据类型不匹配

vb.net中条件表达式中的数据类型不匹配

在条件表达式中获取错误3464数据类型不匹配

条件表达式中的数据类型与REPLACE不匹配,无法替换

OleDb.OleDbException 条件表达式中的数据类型不匹配

选择查询中出现错误:条件表达式中的数据类型不匹配

System.Data.OleDb.OleDbException:'条件表达式中的数据类型不匹配。'

条件表达式中的数据类型不匹配(vb.net,访问权限)

条件表达式异常中的数据类型不匹配

条件表达式中的数据类型不匹配vb2010“编辑”按钮