3
此查询有效;也就是说,它返回预期的结果:dapper查询 - 修复“未接受引号附近...”错误
var r = sql.Query<T>("select * from TableName where Name = '" + name + "'");
但是,如果“名称”值中的一个包含apostrophy(这是真的),然后抛出一个异常“{“附近有语法错误‘资源’。 \ r \ n在字符串''后面加上引号'''' - 为了尝试fix that problem,我的查询不再返回任何结果;但它应该。
我试图改变在几个方面的代码,但没有结果与下列任一变化返回:
var r = sql.Query<T>("select * from TableName where Name = '@name'", new { name });
或
var args = new DynamicParameters(name);
var r = sql.Query<T>("select * from TableName where Name = '@name'", args);
或
var args = new DynamicParameters(); args.AddDynamicParams(new { name });
var r = sql.Query<T>("select * from TableName where Name = '@name'", args);
或
var args = new DynamicParameters(); args.Add("@name", name);
var r = sql.Query<T>("select * from TableName where Name = '@name'", args);
这可能是一些微不足道的事情,我只是还没有理解这个概念......但是我已经花费了太多的时间试图弄明白这个问题 - 因此这个问题。
这正是我在阅读最初发布的答案后最终做的事!我知道它必须是一些微不足道的东西 - 我没有意识到将'@ name'放在单引号中会强制它被视为字符串文字。谢谢。 – Bret 2014-11-01 19:55:27
当一个图书馆的非用户期望的确是API的工作方式时,它让我满意。这表明我们做对了。 – 2014-11-01 20:26:54