NHibernate系列学习(二)-使用sql和hql以及linq
1.本文主要介绍了NH的三种查询方式
2.界面查看
3.代码架构
4.代码详情
namespace KimismeDemo
{
public partial class Form2 : Form
{
private ISession session;
private ISessionFactory factory;
private ITransaction trans;
public Form2()
{
InitializeComponent();
} #region 1.初始化NH - private void Form2_Load(object sender, EventArgs e)
private void Form2_Load(object sender, EventArgs e)
{
Configuration config = new Configuration().AddAssembly("Kimisme");
factory = config.BuildSessionFactory();
session = factory.OpenSession();
dgvList.AutoGenerateColumns = false;
}
#endregion #region 2.0 执行 sql语句 - private void tsmiExecuteSql_Click(object sender, EventArgs e)
private void tsmiExecuteSql_Click(object sender, EventArgs e)
{
string strSql = "select * from T_Student where sId >1";
ISQLQuery sqlQuery = session.CreateSQLQuery(strSql).AddEntity(typeof(Student));
IList<Student> stuList = sqlQuery.List<Student>();
dgvList.DataSource = stuList.ToList();
}
#endregion #region 3.0 执行存储过程 - private void btnExecuteStoreProc_Click(object sender, EventArgs e)
private void btnExecuteStoreProc_Click(object sender, EventArgs e)
{
trans = session.BeginTransaction(); IList<Student> stuList = new List<Student>();
ISessionFactoryImplementor imp = factory as ISessionFactoryImplementor;
IDbConnection conn = imp.ConnectionProvider.GetConnection();
IDbCommand cmd = imp.ConnectionProvider.GetConnection().CreateCommand(); try
{
cmd.CommandText = "Pro_GetStudent";
cmd.CommandType = CommandType.StoredProcedure;
IDbDataParameter parameter = cmd.CreateParameter();
parameter.ParameterName = "StudentId";
parameter.Value = 4;
cmd.Parameters.Add(parameter);
cmd.Connection = conn;
IDataReader read = cmd.ExecuteReader();
while (read.Read())
{
Student stu = new Student();
stu.Id = int.Parse(read.GetValue(0).ToString());
stu.Name = read.GetValue(1).ToString();
stu.Age = int.Parse(read.GetValue(2).ToString());
stuList.Add(stu);
}
trans.Commit();
dgvList.DataSource = stuList.ToList();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
#endregion #region 4.0 执行hql语句 -private void tsmiExecuteHql_Click(object sender, EventArgs e)
private void tsmiExecuteHql_Click(object sender, EventArgs e)
{
string strHql = "from Student stu where stu.Id >:stuId";
IList<Student> stuList = session.CreateQuery(strHql).SetInt32("stuId", 7).List<Student>();
dgvList.DataSource = stuList.ToList();
}
#endregion #region 5.0 执行linq语句-聚合函数 - Max
private void tsmiMax_Click(object sender, EventArgs e)
{
var stuList = session.QueryOver<Student>().Where(s => s.Id > 0).List();
int maxAge = (from s in stuList select s.Age).Max();
MessageBox.Show(maxAge.ToString());
}
#endregion #region 5.1 执行linq语句-聚合函数 - Min
private void tsmiMin_Click(object sender, EventArgs e)
{
var stuList = session.QueryOver<Student>().Where(s => s.Id > 0).List();
int minAge = (from s in stuList select s.Age).Min();
MessageBox.Show(minAge.ToString());
}
#endregion #region 5.2执行linq语句-聚合函数 - Avg
private void tsmiAvg_Click(object sender, EventArgs e)
{
var stuList = session.QueryOver<Student>().Where(s => s.Id > 0).List();
double avgAge = (from s in stuList select s.Age).Average();
MessageBox.Show(avgAge.ToString());
}
#endregion #region 5.3执行linq语句-聚合函数 - Sum
private void tsmiSum_Click(object sender, EventArgs e)
{
var stuList = session.QueryOver<Student>().Where(s => s.Id > 0).List();
int sumAge = (from s in stuList select s.Age).Sum();
MessageBox.Show(sumAge.ToString());
}
#endregion #region 5.4 执行linq语句-聚合函数 - Count
private void tsmiCount_Click(object sender, EventArgs e)
{
var stuList = session.QueryOver<Student>().Where(s => s.Id > 0).List();
int countAge = (from s in stuList select s.Age).Count();
MessageBox.Show(countAge.ToString());
}
#endregion }
}
5.代码下载
NHibernate系列学习(二)-使用sql和hql以及linq的更多相关文章
- NHibernate初学二之简单执行SQL及HQL、Linq
上篇文章简单介绍NHibernate之简单增删改查,本文将会简单介绍有关执行NHibernate的SQL.HQL及存储过程: 一:执行SQL语句实例,运用CreateSQLQuery方法 public ...
- Nhibernate系列学习之(三) Criteria查询表达式增删改查
Criteria查询表达式: 正如我们所见,Expression对查询语句的表达式进行了封装和限制,下表列出了Expression所有的方法,以及每个方法所对应的查询表达式及其限制. Restrict ...
- Nhibernate系列学习之(五) 存储过程
NHibernate也是能够操作存储过程的,不过第一次配置可能会碰到很多错误. 一.删除 首先,我们新建一个存储过程如下: CREATE PROC DeletePerson @Id int AS DE ...
- Java程序员从笨鸟到菜鸟之(一百零二)sql注入攻击详解(三)sql注入解决办法
sql注入攻击详解(二)sql注入过程详解 sql注入攻击详解(一)sql注入原理详解 我们了解了sql注入原理和sql注入过程,今天我们就来了解一下sql注入的解决办法.怎么来解决和防范sql注入, ...
- paip.取当天记录的方法sql跟hql hibernate
paip.取当天记录的方法sql跟hql hibernate #------两个方法...函数法和日期计算法.. 函数法: DATEDIFF(d,createTime,GETDATE())=0 / ...
- MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存
目录(?)[-] 二SQL语句映射文件2增删改查参数缓存 select insert updatedelete sql parameters 基本类型参数 Java实体类型参数 Map参数 多参数的实 ...
- MyBatis学习 之 二、SQL语句映射文件(1)resultMap
目录(?)[-] 二SQL语句映射文件1resultMap resultMap idresult constructor association联合 使用select实现联合 使用resultMap实 ...
- 二:SQL映射文件
二:SQL映射文件 1.SQL映射文件: (1)mapper:映射文件的根元素节点,只有一个属性namespace(命名空间) 作用:用于区分不同的mapper全局唯一 绑定dao接口即面向接口编程, ...
- Nhibernate系列学习之(一) ORM and Nhibernate入门实例解析
最近框架项目需要,数据层想使用Nhibernate,代替传统的sql语句的写法,更加使用面向对象的思维来维护实体与数据库的这层关系映射(ORM),好在之前接触过Java时学习使用了Hibernate, ...
随机推荐
- JUnit 深入
Fixture 何谓 Fixture ?它是指在执行一个或者多个测试方法时需要的一系列公共资源或者数据,例如测试环境,测试数据等等.在编写单元测试的过程中,您会发现在大部分的测试方法在进行真正的测试之 ...
- C#装饰模式
using System;using System.Collections.Generic;using System.Text; namespace 装饰模式{ class Person ...
- ORA-00604: 递归 SQL 级别 1 出现错误 ORA-01653: 表 SYS.AUD$ 无法通过 8192 (在表空间 SYSTEM 中) 扩展
https://blog.csdn.net/zhangyong329/article/details/53421951
- Ubuntu 16.04安装PDF阅读器FoxitReader
下载: https://www.foxitsoftware.cn/downloads/ 安装: tar zxvf FoxitReader2.4.1.0609_Server_x64_enu_Setup. ...
- Solid Edge如何快速装配,如何截取组装关系式
我们点击装配体的任意零件,下方将显示他的装配关系,由于一些零件的装配关系是固定的,比如螺栓,肯定要做一个面贴和,再做一个同轴,所以我们可以保存这些固有的步骤,不用再每次挨个点击这些装配关系. 点击 ...
- 自由宣言--《I Have a Dream》(马丁.路德.金)
I Have a Dream by Martin Luther King, Jr. I am happy to join with you today in what will go down in ...
- protobuf-net precompile
之前游戏为了解决在ios自动更新的问题,想到使用了将游戏代码打包成dll,使用反射加载执行的办法.办法想好了以后,一直没有做测试.上周不知道什么原因,终于有人去测试了,结果发现报错了.我当时觉得有点意 ...
- leetcode笔记:Wiggle Sort
一. 题目描写叙述 Given an unsorted array nums, reorder it in-place such that nums[0] <= nums[1] >= nu ...
- [C++设计模式] decorator 装饰者模式
<head first>中 的样例:咖啡店有各种咖啡饮料,能够往咖啡里面加各种调料变成还有一种饮料.假设使用继承的方式来为每一种饮料设计一个类,代码的复杂度非常easy膨胀,并且会继承父类 ...
- 【Ubuntu】无法挂载磁盘
我的电脑分了三个分区,A,B,C,其中A和B是Windows盘,C是ubuntu系统盘 某日发现A ,B盘没法进入了,在文件管理器中点一下,没有反应.于是右击盘符,点击挂载,跳出错误信息: (划重点) ...