我在访问数据库中插入一行时遇到问题。我不断收到“条件表达式中的数据类型不匹配”。我已经尝试了大量不同的格式化查询,似乎无法弄清楚我哪里出错了。
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
答案 0 :(得分:1)
由于您的Currency
列Number
而Online
似乎Yes/No
(它存储1位),您不需要使用单引号。使用单引号威胁他们作为角色。
string updateStr = "Insert Into Users ([Username], [Currency], [Joined], [Online], [Notes]) "
+ "Values ( ?, 0, ?, Yes, '')";
^^^ ^^^
而您的Joined
为DateTime
,您不应尝试插入DateTime.Now
的字符串表示形式。只需将其作为ODBC规范日期格式DateTime
插入即可。
日期值必须根据ODBC规范分隔 日期格式或由日期时间分隔符分隔("#")。除此以外, Microsoft Access将该值视为算术表达式 不会发出警告或错误。