繁体   English   中英

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

[英]Data type mismatch in criteria expression when Query Access DB

我在将行插入到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);
    }

这不是我的连接字符串或其他任何东西,因为我的所有其他查询都能正常工作。 这里一定有东西。 我假设可能与日期时间有关。

访问数据库:
用户名:ShortText
货币:数字
已加入:“常规日期”格式的日期/时间
在线:是/否
注意:ShortText

由于您的“ Currency列为“ Number并且“ Online似乎Yes/No它存储1位) ,因此您不需要在它们之间使用单引号。 使用单引号会威胁它们作为字符。

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

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

文件 ;

日期值必须根据ODBC规范日期格式来定界,或者由日期时间定界符(“#”)来定界。 否则,Microsoft Access会将值视为算术表达式,并且不会引发警告或错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM