需要更正以下:不是只能查询一个表的,而是只能返回一个表
正常来说是不能多表查询的,只能是查询一个表的,但是我们可以创建视图来进行多表查询。视图相当于一个表,把查询出来的内容放到视图中,加快查询速度。
我们要在数据库中创建视图,创建视图语句就自己百度啦,有不懂的可以搜索相关视图的知识。
这里我就放上查看视图语句,这只是两表查询,要想实现三表甚至四表查询只要把查询语句改改就可以了。
ALTER view [dbo].[视图名称]
as
select
a.id,
b.name
from 表1 a,
表2 b
where a.id=b.id
OK~~视图创建成功。
接下来就要在visual(一个编程软件)中创建实体类,就像创建一个正常的表那样创建就行。因为我是在配置中直接映射数据库的了,所以我就不用再去创建实体类,这里就不放上代码了。
(不管是什么语言,就把视图当作一个表那样子引用就好,其他表怎么查询的这个视图就怎么查询)
以下是我工作中的代码,是有另外定义了方法的(就只是记录一下)
有两种方法,不过它们的区别只是类型不一样,一个是Json数据类型,一个是DataTable类型。
还有一个区别在QueryBuilder与QueryParser(也是有定义方法的),这两个主要是传递过来的data形式不一样。
直接上代码:
public void Get(HttpContext context)
{
string strExpr = QueryBuilder.GetWhereStr(context);
DataTable source = new DataTable();
KQuery query = new KQuery();
source = query.ExecuteQuery("视图名", strExpr);
//这是返回的Json类型
//ToJson(source)是把DataTable类型转换成Json类型
string jsonString = JsonHelper.ToJson(source);
context.Response.Write(jsonString);
}
再来看看返回DataTable类型的。DataTable相当于一个数据表,关于什么是DataTable可以去看其他大佬的理解,我也不太懂,怕误导你们,等之后理解了再来更。
public void ListSums(HttpContext context)
{
string strWhere = QueryParser.GetCriteria(</