模板中如何执行sql命令和自定义查询

注:以下方法为v4.0.13版本新增,之前的版本升级后才能使用以下方法。

1、执行sql命令

Html.SqlExecute(string sql,dynamic sqlParameters=null)

实例:制作一个更新新闻点击数的api模板。

@{
    Layout = null;
    Html.SqlExecute("update news set clicks=clicks+1 where id=@id", new {id=1});
    var result = new { State = 1, Msg = "更新成功" };
    Html.ResponseJson(result);//输出json对象方便前端通过ajax获取
}

2、通过sql读取数据表中的一条数据,返回值为对象。

Html.SqlQueryFirst(string sql,dynamic sqlParameters=null)

3、通过sql读取数据,返回值为集合。

Html.SqlQuery(string sql,dynamic sqlParameters=null)

4、根据表名、字段名和id获取数据,返回值为对象。

Html.GetData(string table,string fields,string sqlCondition,dynamic sqlParameters=null,string orderBy=null)

注:fields可为null或*,表示读取所有字段,为提升效率,建议只设置需要读取的字段,多个字段可用半角逗号隔开,以下方法也遵循此条规则。

实例:获取新闻表的id=1的数据,并读取title和content两个字段的值。

@{
    Layout = null;
    var newwData=Html.GetData("news","title,content","id=@id",new {id=1});
    if(newwData!=null) //判断是否有数据
    {
        var title=newwData.Title;//获取title字段值,注意,这里title首字符大写。
            var content=newwData.Content;//获取content字段值
    }
 }

5、根据表名和条件获取字段值,返回object对象值

Html.GetField(string table,string field,string sqlCondition, dynamic sqlParameters = null)

实例:获取新闻表的点击量字段值

@{
    Layout = null;
    var clickObj=Html.SqlExecute("news","clicks","id=@id",new {id=1});
    int clicks=(int)clicks;//转为int类型,注意要保证字段是数值类型
    string clicksString=clickObj?.ToString();//转为string字符串类型
}

6、根据表名和条件获取数据总数,返回int数值

Html.GetCount(string table, string sqlCondition, dynamic sqlParameters = null)

实例:获取发布人uid为1,并且已审核的新闻数据表数据总数

@{
    Layout = null;
    var userNewCount=Html.SqlExecute("news","state=1 and uid=@uid",new {uid=1});
}

7、根据表名、字段名、自定义条件、自定义参数和排序获取第一条匹配数据,返回值为对象。

Html.GetData(string table,string fields,string sqlCondition,dynamic sqlParameters=null,string orderBy=null)

8、根据表名、字段名、显示数、自定义条件、自定义参数和排序获取数据,返回值为集合。

Html.GetDataList(string table,string fields,int showNumber,string sqlCondition = null, dynamic sqlParamters = null,string orderBy=null)

9、根据表名、字段名、分页对象、自定义条件、自定义参数和排序获取分页数据,返回值为集合。

Html.GetDataList(this HtmlHelper htmlHelper, string table, string fields,PageInfo pageInfo, string sqlCondition = null, dynamic sqlParamters = null, string orderBy = null)

以上方法的底层采用DataBaseContext对象,有兴趣的可以查看相关文档研究DataBaseContext源码和方法。