加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 14:27:27 所属栏目:MsSql教程 来源:网络整理
导读:时隔上篇的2已经好久了,好多个人原因导致自己好久没写了,抱歉 还是接着上一篇写吧 ? 首先我们在上次的那个SubSonicTestDB?数据库上执行下面Sql,给学生表添加一个入学日期列? ? alter ? table ?Student? add ?EnterSchoolDate? datetime ? default ? getda

时隔上篇的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?00:00:00"),?DateTime.Now.AddDays(30)).ExecuteReader();

???????????? while?(dr.Read())
????????????{
????????????????Console.WriteLine(dr[ " StudentId "]?+? t "?+?dr[ StudentName StudentHobby "]);
????????????}// http://www.heatpress123.net

?其他方式还有很多

?

3.2添加一个条件(AddWhere)

???????IDataReader?dr?=?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 "]);}?

? ?

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

??????????????Query?query?=?

复制代码

????????????query.PageIndex?=? 1;
????????????query.PageSize?=? 8;
????????????IDataReader?dr?=?Student.FetchByQuery(query);
????????????Console.WriteLine( 第一页 ");
???????????? "]);
????????????}
////////////www.software8.co
????????????Console.WriteLine( 第二页 ");
????????????query.PageIndex?=? 2;
????????????dr=?Student.FetchByQuery(query);
???????????? "]);
????????????}

复制代码

?效果:


使用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}

复制代码

? ? ? ? ? ? ?

?4.返回一个JOSN(ExecuteJSON?)

?????????????string?studentsJOSN=?张老师").Paged(3).ExecuteJSON(stuSTUDENT");

?

效果图

?

?

5.返回一个XML(ExecuteXML)

?????????????string?studentsXML?=?3).ExecuteXML(Students");

效果图如下:?

?

?

6.添加一些条件

? 6.1 模糊查询

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

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

???????????? in?dt.Rows)
????????????{
????????????????Console.WriteLine(item[ 0]?+? 1]?+? 2]);}

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

?

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

? ? ????DataTable?dt?=?StudentID").IsBetweenAnd(5,128)">10).ExecuteDataSet().Tables[0];?

?

?

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读