给出像这样的查询字符串
SELECT * FROM articles WHERE article_id=@0 OR article_title=@1
我正在尝试为硬编码的查询字符串构建测试框架。目标是针对数据库触发空白查询,看它是否失败。我最好想要使用PetaPoco但对其他人开放。
答案 0 :(得分:1)
您还需要知道参数值的类型(整数,字符串等)
如果您正在构建框架,您应该允许用户添加查询语句以及类型,值范围和默认值所需的参数
答案 1 :(得分:0)
诀窍是正则表达式用NULL替换参数。就SQL Server而言,这是一个结构良好的查询。所以它会很好地执行它,但它在逻辑上是不正确的(即Column = NULL和Column IS NULL不相同)。如果您有拼写错误,它会检测到它。
public class DbQueryTester : DbEntity
{
Regex m_rgx = new Regex(@"@\d+\s*");
public bool TryQuery(string qry, out Exception ex)
{
try
{
string newQry = m_rgx.Replace(qry, "NULL ");
Fetch<object>(newQry);
}
catch (Exception tmp)
{
ex = tmp;
return false;
}
ex = null;
return true;
}
}