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 00:00:00"), DateTime.Now.AddDays(30)).ExecuteReader();
{
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 00:00:00"), DateTime.Now.AddDays(30)).AddWhere(Student.Columns.StudentHobby,"中国象棋").ExecuteReader();
只是在3.1里面添加了一个是爱好是中国象棋的条件
3.3常用取前几条数据的方法
3.3.1 Top
Query query = new Query("Student");
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这么局限,感受一下
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.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
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];
{
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];
暂时写到这里 ,不知道你们有没有学到什么...
本文作者:AYUI框架
本文链接:https://www.cnblogs.com/AaronYang/archive/2012/09/19/2693822.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库