.Net PetaPoco默认查询参数

时间:2014-09-09 18:47:37

标签: .net testing ado.net petapoco

给出像这样的查询字符串

    SELECT * FROM articles WHERE article_id=@0 OR article_title=@1
  1. 确定参数总数(可能是正则表达式?)
  2. 为每个参数传递默认值
  3. 我正在尝试为硬编码的查询字符串构建测试框架。目标是针对数据库触发空白查询,看它是否失败。我最好想要使用PetaPoco但对其他人开放。

2 个答案:

答案 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;
    }
}