好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

SubSnoic 框架入门到提高(3)全程记录

SubSnoic 框架入门到提高(3)全程记录

时隔上篇的2已经好久了,好多个人原因导致自己好久没写了,抱歉

还是接着上一篇写吧

首先我们在上次的那个SubSonicTestDB 数据库上执行下面Sql,给学生表添加一个入学日期列 

  alter   table  Student  add  EnterSchoolDate  datetime   default   getdate () 

额外技巧: 教大家一个快速输入时间的方法,开始这样,我用搜狗输入法

 例如

,在输入中 ,输入sj得到

 

 然后按3,就可以输入当前时间了,如此添加一些测试数据。

 开始:

 3.1时间段查询(BETWEEN_AND 方法)

      IDataReader dr =  new  Query(Tables.Student).BETWEEN_AND(Student.Columns.EnterSchoolDate, Convert.ToDateTime( " 2012-09-01 0 " ), DateTime.Now.AddDays( 30 )).ExecuteReader();

             while  (dr.Read())
            {
                Console.WriteLine(dr[ " StudentId " ] +  " \t "  + dr[ " StudentName " ] +  " \t "  + dr[ " StudentHobby " ]);
            }

 其他方式还有很多

3.2添加一个条件(AddWhere)

       IDataReader dr =  new  Query(Tables.Student).BETWEEN_AND(Student.Columns.EnterSchoolDate, Convert.ToDateTime( " 2012-09-01 0 " ), DateTime.Now.AddDays( 30 )).AddWhere(Student.Columns.StudentHobby, " 中国象棋 " ).ExecuteReader();

只是在3.1里面添加了一个是爱好是中国象棋的条件

3.3常用取前几条数据的方法

  3.3.1 Top

               Query query =  new  Query( " Student " );

            query.Top =  " 8 " ;
            query.SelectList =Student.Columns.StudentID+ " , " +Student.Columns.StudentName +  " , "  + Student.StudentHobbyColumn.ToString();
            query.OrderBy = OrderBy.Desc(Student.Columns.StudentID);

            IDataReader dr = Student.FetchByQuery(query); 

 当然那个Query你也可以直接写 Query query = new Query("Student").SetTop("10").ORDER_BY("StudentID desc"); 

 可能你会对Query这么麻烦感到烦恼,那我把上期某个例子放一下,不是Query类型的只能FetchByQuery这么局限,感受一下

            DataSet sts =  new  Query(Tables.Student).WHERE( " StudentHobby " ,  " 中国象棋 " ).ORDER_BY( " StudentId asc " ).ExecuteDataSet();
             foreach  (DataRow item  in  sts.Tables[ 0 ].Rows)
            {
                Console.WriteLine(item[ " StudentId " ] +  " \t "  + item[ " StudentName " ] +  " \t "  + item[ " StudentHobby " ]);} 

   

 3.3.2 Query类型自带的 PageIndex,PageSize属性,我的理解是将结果分页

              Query query =  new  Query( " Student " );

            query.PageIndex =  1 ;
            query.PageSize =  8 ;
            IDataReader dr = Student.FetchByQuery(query);
            Console.WriteLine( " 第一页 " );
             while  (dr.Read())
            {
                Console.WriteLine(dr[ " StudentId " ] +  " \t "  + dr[ " StudentName " ] +  " \t "  + dr[ " StudentHobby " ]);
            }

            Console.WriteLine( " 第二页 " );
            query.PageIndex =  2 ;
            dr= Student.FetchByQuery(query);
             while  (dr.Read())
            {
                Console.WriteLine(dr[ " StudentId " ] +  " \t "  + dr[ " StudentName " ] +  " \t "  + dr[ " StudentHobby " ]);
            }

 效果:

使用SQL Server Profiler跟踪可以查看他在内部怎么执行的

 这里只列出一点点,自己有兴趣可以看看

这个工具在sqlserver2008 的菜单栏 --”工具“--SQL SERVER Profiler,运行,直接下一步即可,存储过程也可以跟踪

 3.3.3其他分页(Paged方法)

①查出张老师名下的学生,返回一个List类型的,如果你想返回更多的信息,建议用其他类型,例如DataSet 

   List<Student> students =  new  Select(Student.StudentIDColumn,Student.StudentNameColumn,Student.StudentHobbyColumn,Student.EnterSchoolDateColumn).From<Student>().InnerJoin(Teacher.TeacherIDColumn,Student.TeacherIDColumn).Where(Teacher.TeacherNameColumn).IsEqualTo( " 张老师 " ).Paged( 1 , 3 ).ExecuteTypedList<Student>();
             foreach  (Student item  in  students)
            {
                Console.WriteLine( " {0}   {1}  {2} " ,item.StudentID,item.StudentName,item.StudentHobby); }

             

 4.返回一个JOSN(ExecuteJSON )

              string  studentsJOSN=  new  Select(Student.StudentIDColumn, Student.StudentNameColumn, Student.StudentHobbyColumn, Student.EnterSchoolDateColumn).From<Student>().InnerJoin(Teacher.TeacherIDColumn, Student.TeacherIDColumn).Where(Teacher.TeacherNameColumn).IsEqualTo( " 张老师 " ).Paged( 1 ,  3 ).ExecuteJSON( " stu " , " STUDENT " );

效果图

 

5.返回一个XML(ExecuteXML)

              string  studentsXML =  new  Select(Student.StudentIDColumn, Student.StudentNameColumn, Student.StudentHobbyColumn, Student.EnterSchoolDateColumn).From<Student>().InnerJoin(Teacher.TeacherIDColumn, Student.TeacherIDColumn).Where(Teacher.TeacherNameColumn).IsEqualTo( " 张老师 " ).Paged( 1 ,  3 ).ExecuteXML( " Students " , " Student " );

效果图如下: 

 

6.添加一些条件

  6.1 模糊查询

      模糊查询,查出爱好含姓小的人的

       DataTable dt =  new  Select().From<Student>().WhereExpression( " StudentName " ).StartsWith( " 小 " ).ExecuteDataSet().Tables[ 0 ];

             foreach  (DataRow item  in  dt.Rows)
            {
                Console.WriteLine(item[ 0 ] +  " \t "  + item[ 1 ] +  " \t "  + item[ 2 ]);}

       还有其他方法,例如EndsWith,Expression,AndExpression等

  6.2范围查询,IsBetweenAnd这个跟3.1的BETWEEN_AND不一样,BETWEEN_AND必须是datetime范围内的,IsBetweenAnd是两个对象,包括时间

        DataTable dt =  new  Select().From<Student>().WhereExpression( " StudentID " ).IsBetweenAnd( 5 , 10 ).ExecuteDataSet().Tables[ 0 ]; 

暂时写到这里 ,不知道你们有没有学到什么...

 

分类:  框架学习

框架学习

 

SubSnoic 框架入门到提高(4)---全程记录

摘要: 本篇主要是一些琐碎的东西了,前面3篇都是关于查询的这篇讲一些没水准的吧4.1 Update 4.1.1 把ID为1的学生的爱好改成 打游戏 Studentini=Student.FetchByID(1);Console.WriteLine("原来爱好是{0}",ini.StudentHobby);inti=newUpdate(Tables.Student).Set(Student.StudentHobbyColumn).EqualTo("打游戏").Where(Student.StudentIDColumn).IsEqualTo(1).Execute() 阅读全文

posted @  2012-09-19 17:04  茗洋芳竹 阅读(8) |  评论 (0)   编辑

SubSnoic 框架入门到提高(3)---全程记录

摘要: 时隔上篇的2已经好久了,好多个人原因导致自己好久没写了,抱歉还是接着上一篇写吧首先我们在上次的那个SubSonicTestDB数据库上执行下面Sql,给学生表添加一个入学日期列altertableStudentaddEnterSchoolDatedatetimedefaultgetdate()额外技巧: 教大家一个快速输入时间的方法,开始这样,我用搜狗输入法例如,在输入中 ,输入sj得到然后按3,就可以输入当前时间了,如此添加一些测试数据。开始:3.1时间段查询(BETWEEN_AND 方法)IDataReaderdr=newQuery(Tables.Student).BETWEEN_AND( 阅读全文

posted @  2012-09-19 15:52  茗洋芳竹 阅读(315) |  评论 (2)   编辑

SubSnoic 框架入门到提高(2)---全程记录

摘要: 上篇说到了 subsonic 的配置与然后根据数据库生成实体操作类下面我们继续学习,他的逻辑处理语句为了方便演示,我就不建什么框架了,直接UI层用控制台了,还请见谅右键上次的那个项目 ,添加 控制台应用程序:SubSonicUI然后把SubSonicDAL层下的app.config文件复制到SubSonicUI 程序集下,注意你添加的控制台默认使用的framework是 .Net FrameWork4 Client Profile,将它改成.Net FrameWork4如图:然后添加 SubSonic.dll 和 System.configuration.dll 类库的引用,还有Student 阅读全文

posted @  2012-05-22 17:37  茗洋芳竹 阅读(922) |  评论 (1)   编辑

SubSnoic 框架入门到提高(1)---全程记录

摘要: 关于这个框架的介绍我就不说了,网上很多,我只教基本用法,基本逻辑语句写法以sqlserver2008+SubSonic 2.2+VS2010为了让学习者能顺利学习,我已将subsonic2.2上传到了csdn上了 ,下载地址:http://download.csdn.net/download/yangyanghaoran/4318138为了防止恶意转载:本文地址http://HdhCmsTestcnblogs测试数据/Fresh-Air/archive/2012/05/21/2511578.html一:现在D盘建一个文件夹:SubsonicTest, 在该目录下放置你需要的文件SubSonic2.2.ZI 阅读全文

posted @  2012-05-21 15:44  茗洋芳竹 阅读(1329) |  评论 (7)   编辑

作者: Leo_wl

    

出处: http://HdhCmsTestcnblogs测试数据/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于SubSnoic 框架入门到提高(3)全程记录的详细内容...

  阅读:44次