Query Access DB时,条件表达式中的数据类型不匹配

时间:2014-07-25 07:29:28

标签: c# sql .net database ms-access

我在访问数据库中插入一行时遇到问题。我不断收到“条件表达式中的数据类型不匹配”。我已经尝试了大量不同的格式化查询,似乎无法弄清楚我哪里出错了。

    public void addUserToDB(string username)
    {
        string updateStr = "Insert Into Users ([Username], [Currency], [Joined], [Online], [Notes]) "
                         + "Values ( ?, '0', ?, 'Yes', '')";
        OleDbCommand update = new OleDbCommand(updateStr, con);
        update.Parameters.Add("", OleDbType.VarChar).Value = username;
        update.Parameters.AddWithValue("","'#" + DateTime.Now.ToString("G") + "#'");
        update.Parameters.AddWithValue("","'#" + DateTime.Now.ToString("G") + "#'");
        execute(update);
    }

这不是我的连接字符串或其他任何内容,因为我的所有其他查询都运行正常。它必须是这里的东西。我假设可能有一些与日期时间有关的东西。

访问DB:
用户名:ShortText
货币:编号
加入:“一般日期”格式的日期/时间
在线:是/否
注意:ShortText

1 个答案:

答案 0 :(得分:1)

由于您的CurrencyNumberOnline似乎Yes/No它存储1位),您不需要使用单引号。使用单引号威胁他们作为角色。

string updateStr = "Insert Into Users ([Username], [Currency], [Joined], [Online], [Notes]) "
                     + "Values ( ?, 0, ?, Yes, '')";
                                   ^^^    ^^^

而您的JoinedDateTime,您不应尝试插入DateTime.Now的字符串表示形式。只需将其作为ODBC规范日期格式DateTime插入即可。

来自documentation;

  

日期值必须根据ODBC规范分隔   日期格式或由日期时间分隔符分隔("#")。除此以外,   Microsoft Access将该值视为算术表达式   不会发出警告或错误。