当前位置: 首页 > news >正文

NQL.NET 数据库对象查询语言简介 2

      17. 比DataSet更简单的分页操作,并且性能也大大增强了,CurrentPageIndex = 1,PageSize = 5

None.gif this .dataGrid1.DataSource  =   new  Query( " Customers " )
None.gif                .Where(Ex.Like(
" ContactTitle " , " Sales% " ))
None.gif                .GetDataTable(
1 , 5 );

SQL  输出

None.gif SELECT   TOP   5   *    FROM  (  SELECT    *  
None.gif
FROM  Customers 
None.gif
WHERE   [ ContactTitle ]    LIKE  @ContactTitle )  AS  TMP 
None.gif
WHERE  TMP.CustomerID  >  ( SELECT   MAX (TMP3.CustomerID)  FROM  (  SELECT   TOP   5  TMP2.CustomerID  FROM  (  SELECT    *  
None.gif
FROM  Customers 
None.gif
WHERE   [ ContactTitle ]    LIKE  @ContactTitle )  AS  TMP2  ORDER   BY  TMP2.CustomerID  ASC AS  TMP3)  ORDER   BY  TMP.CustomerID  ASC

18。在计算列上可以进行+,-,*,/,%,++,--操作,在条件表达式上不仅可以进行算术运算而且可以进行逻辑运算 &&,||,! 以及进行比较运算==,!=,>,>=,<,<=,还可以进行范围运算%,in,between等运算

18.1 算术运算和比较运算

None.gif Query q  =   new  Query( " Products " );
None.gif Condition con 
=  q.NewCondition( " UnitPrice " *  q.NewCondition( " UnitsInStock " <= 1000 ;
None.gif 
this .dataGrid1.DataSource  =  con.GetDataTable();

SQL  输出

None.gif SELECT    *  
None.gif
FROM  Products 
None.gif
WHERE  
None.gif    
[ UnitPrice ]   *   [ UnitsInStock ]   <=  @UnitPrice

18.2 逻辑and 和范围Between

None.gif Query q  =   new  Query( " Products " );
None.gif ICondition con 
=  q.NewCondition( " UnitPrice " *  q.NewCondition( " UnitsInStock " <=  1000  
None.gif                
&&  q.NewCondition( " SupplierID " ).Between( 1 , 5 );
None.gif
this .dataGrid1.DataSource  =  con.GetDataTable();

SQL  输出

None.gif SELECT    *  
None.gif
FROM  Products 
None.gif
WHERE  
None.gif    
[ UnitPrice ]   *   [ UnitsInStock ]   <=  @UnitPrice
None.gif    
AND   [ SupplierID ]   BETWEEN  @SupplierID  AND  @_Another_SupplierID

18.3 模糊查询%

None.gif Query q  =   new  Query( " Customers " );
None.gif 
this .dataGrid1.DataSource  =  q.Where(q.NewCondition( " ContactTitle " %   " Sales% " ).GetDataTable();

SQL  输出

None.gif SELECT    *  
None.gif
FROM  Customers 
None.gif
WHERE  
None.gif    
[ ContactTitle ]   LIKE  @ContactTitle

18.4 范围运算IN

None.gif Query qryCustomer  =   new  Query( " Customers " )
None.gif                ._(
" CustomerID " )
None.gif                .Where(
" ContactTitle " , " Owner " );
None.gif
None.gifQuery qryOrder 
=   new  Query( " Orders " );
None.gifqryOrder.Where(    qryOrder.NewCondition(
" ShipVia " ==   1   &&  qryOrder.NewCondition( " CustomerID " ).In(qryCustomer));
None.gif 
this .dataGrid1.DataSource  =  qryOrder.GetDataTable();

SQL  输出

None.gif SELECT    *  
None.gif
FROM  Orders 
None.gif
WHERE  
None.gif    
[ ShipVia ]   =  @ShipVia
None.gif    
AND   [ CustomerID ]   IN  ( SELECT  
None.gif                                                        
[ CustomerID ]
None.gif                             
FROM  Customers 
None.gif                             
WHERE   [ ContactTitle ]    =  @ContactTitle )

18.5 复杂一点的条件

None.gif Query q  =   new  Query( " Products " );
None.gif Condition con 
=  q.NewCondition( " UnitPrice " >=  50  
None.gif                
&&  (
                            q.NewCondition( " UnitsInStock  " )  <=  20  
None.gif                          
||  q.NewCondition( " UnitsOnOrder " >   0
                             )
None.gif                
&&  q.NewCondition( " ProductID " )  > 6 ;
None.gif
None.gif
this .dataGrid1.DataSource  =  q.Where(con).GetDataTable();

SQL  输出

None.gif SELECT    *  
None.gif
FROM  Products 
None.gif
WHERE  
None.gif    
[ UnitPrice ]   >=  @UnitPrice
None.gif    
AND  (
None.gif        
[ UnitsInStock  ]   <=  @UnitsInStock   OR   [ UnitsOnOrder ]   >  @UnitsOnOrder
None.gif    ) 
None.gif    
AND   [ ProductID ]   >  @ProductID

19 . 查询表达式另一种写法 算术运算 Add(+),Minus(-),Multiply(*),Divide(/),Mode (%),逻辑运算and,or,not

比较运算GreatThan(>,GT),GreaterEquals(>=,GE),Equal(==,EQ),LessEquals(<=,LE),Little(<,LT),NotEquals(!=,NE)

IsNull,IsNotNull,IgnoreCase(忽略大小写)等运算

None.gif Query q  =   new  Query( " Products " );
None.gifCondition con 
=  q.NewCondition( " UnitPrice " ).GreaterEquals( 50 )
None.gif                .And
                  (
None.gif                         q.NewCondition(
" UnitsInStock  " ).LessEquals( 20 )
None.gif                         .Or
                              (
None.gif                                  q.NewCondition(
" UnitsOnOrder " ).GreaterThan( 0 )
                              )
None.gif                )
None.gif                .And(q.NewCondition(
" ProductID " ).GT( 6 ));
None.gif            
this .dataGrid1.DataSource  =  q.Where(con).GetDataTable();

SQL  输出

None.gif SELECT    *  
None.gif
FROM  Products 
None.gif
WHERE  
None.gif    
[ UnitPrice ]   >=  @UnitPrice
None.gif    
AND  (
None.gif        
[ UnitsInStock  ]   <=  @UnitsInStock   OR   [ UnitsOnOrder ]   >  @UnitsOnOrder
None.gif    ) 
None.gif    
AND   [ ProductID ]   >  @ProductID

20. Case When 语句的用法

None.gif Query q  =   new  Query( " Orders " );
None.gif 
this .dataGrid1.DataSource  =  q.Select( " OrderID " ,
                      " ShipCountry " ,
None.gif                    q.Case(
" ShipCountry " )
None.gif                        .When(
" France " ).Then( " fc " )
None.gif                        .When(
" USA " ).Then( " us " )
None.gif                        .When(
" German " ).Then( " gm " )
None.gif                        .Else(
" com " )
None.gif                        .End().As(
" SC " ),
None.gif                    
" OrderDate " )
None.gif                .GetDataTable();

SQL  输出

None.gif SELECT  
None.gif    
[ OrderID ] ,
None.gif    
[ ShipCountry ] ,
None.gif    
CASE   [ ShipCountry ]
None.gif        
WHEN   ' France '   THEN   ' fc '
None.gif        
WHEN   ' USA '   THEN   ' us '
None.gif        
WHEN   ' German '   THEN   ' gm '
None.gif        
ELSE   ' com '
None.gif        
END   AS  SC,
None.gif    
[ OrderDate ]
None.gif
FROM  Orders 

21 统计函数(Count,Avg,Max,Min,Sum)的用法

21.1 Count

None.gif Query q  =   new  Query( " Products " ).Count( " ProductID " );
None.gif            Condition con 
=  q.NewCondition( " UnitPrice " *  q.NewCondition( " UnitsInStock " <= 1000 ;
None.gif            
this .richTextBox1.Text  =  con.GetScalar().ToString();

SQL  输出

None.gif SELECT  
None.gif    
COUNT ( [ Products ] . [ ProductID ] )
None.gif
FROM  Products 
None.gif
WHERE  
None.gif    
[ UnitPrice ]   *   [ UnitsInStock ]   <=  @UnitPrice

21.2 Avg,其它的Max,Min,Sum用法一样

None.gif Query q  =   new  Query( " Products " ).Avg( " ProductID " );
None.gif            Condition con 
=  q.NewCondition( " UnitPrice " *  q.NewCondition( " UnitsInStock " <= 1000 ;
None.gif            
this .richTextBox1.Text  =  con.GetScalar().ToString();

SQL 输出

None.gif SELECT  
None.gif    
AVG ( [ Products ] . [ ProductID ] )
None.gif
FROM  Products 
None.gif
WHERE  
None.gif    
[ UnitPrice ]   *   [ UnitsInStock ]   <=  @UnitPrice

22 GroupBy的用法

None.gif Query q  =   new  Query( " Orders " )
None.gif                .Select(
" ShipVia " , " ShipRegion " )
None.gif                .GroupBy(
" ShipVia " , " ShipRegion " );
None.gif            
this .dataGrid1.DataSource  =  q.GetDataTable();

SQL  输出

None.gif SELECT  
None.gif    
[ ShipVia ] ,
None.gif    
[ ShipRegion ]
None.gif
FROM  Orders 
None.gif 
GROUP   BY  ShipVia,ShipRegion

 

上一篇  下一篇

相关文章:

  • [转]nf_conntrack: table full, dropping packet 连接跟踪表已满,开始丢包 的解决办法
  • js学习笔记
  • eclipse tomcat lomboz的安装配置说明
  • 微服务运行指南——For Cattle
  • DEMO[C#]TypeChange 关于类型转换的一个DEMO
  • 查看mysql的安装路径
  • 看门老头告诉你什么是网关
  • JS学习笔记——闭包
  • SuperPasterV1.0 测试版发布
  • c语言(01)
  • 第7章 处理串行线路和帧中继连接故障
  • 转载:浅谈 Scala 中下划线的用途
  • buildroot mysql mysql.mk hacking
  • 来介绍一个很好的工具--TodoList
  • Vuejs——(9)组件——props数据传递
  • $translatePartialLoader加载失败及解决方式
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • [NodeJS] 关于Buffer
  • Druid 在有赞的实践
  • express + mock 让前后台并行开发
  • Golang-长连接-状态推送
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Javascript编码规范
  • js递归,无限分级树形折叠菜单
  • js数组之filter
  • LintCode 31. partitionArray 数组划分
  • Linux下的乱码问题
  • Making An Indicator With Pure CSS
  • MaxCompute访问TableStore(OTS) 数据
  • vue的全局变量和全局拦截请求器
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 反思总结然后整装待发
  • 关于for循环的简单归纳
  • 记录一下第一次使用npm
  • 今年的LC3大会没了?
  • 精彩代码 vue.js
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 如何实现 font-size 的响应式
  • 使用SAX解析XML
  • 小程序button引导用户授权
  • 在Docker Swarm上部署Apache Storm:第1部分
  • 7行Python代码的人脸识别
  • Hibernate主键生成策略及选择
  • !!Dom4j 学习笔记
  • #pragma 指令
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (14)Hive调优——合并小文件
  • (16)Reactor的测试——响应式Spring的道法术器
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (二)PySpark3:SparkSQL编程
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一