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的更多相关文章

  1. NHibernate初学二之简单执行SQL及HQL、Linq

    上篇文章简单介绍NHibernate之简单增删改查,本文将会简单介绍有关执行NHibernate的SQL.HQL及存储过程: 一:执行SQL语句实例,运用CreateSQLQuery方法 public ...

  2. Nhibernate系列学习之(三) Criteria查询表达式增删改查

    Criteria查询表达式: 正如我们所见,Expression对查询语句的表达式进行了封装和限制,下表列出了Expression所有的方法,以及每个方法所对应的查询表达式及其限制. Restrict ...

  3. Nhibernate系列学习之(五) 存储过程

    NHibernate也是能够操作存储过程的,不过第一次配置可能会碰到很多错误. 一.删除 首先,我们新建一个存储过程如下: CREATE PROC DeletePerson @Id int AS DE ...

  4. Java程序员从笨鸟到菜鸟之(一百零二)sql注入攻击详解(三)sql注入解决办法

    sql注入攻击详解(二)sql注入过程详解 sql注入攻击详解(一)sql注入原理详解 我们了解了sql注入原理和sql注入过程,今天我们就来了解一下sql注入的解决办法.怎么来解决和防范sql注入, ...

  5. paip.取当天记录的方法sql跟hql hibernate

    paip.取当天记录的方法sql跟hql hibernate #------两个方法...函数法和日期计算法.. 函数法: DATEDIFF(d,createTime,GETDATE())=0   / ...

  6. MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存

    目录(?)[-] 二SQL语句映射文件2增删改查参数缓存 select insert updatedelete sql parameters 基本类型参数 Java实体类型参数 Map参数 多参数的实 ...

  7. MyBatis学习 之 二、SQL语句映射文件(1)resultMap

    目录(?)[-] 二SQL语句映射文件1resultMap resultMap idresult constructor association联合 使用select实现联合 使用resultMap实 ...

  8. 二:SQL映射文件

    二:SQL映射文件 1.SQL映射文件: (1)mapper:映射文件的根元素节点,只有一个属性namespace(命名空间) 作用:用于区分不同的mapper全局唯一 绑定dao接口即面向接口编程, ...

  9. Nhibernate系列学习之(一) ORM and Nhibernate入门实例解析

    最近框架项目需要,数据层想使用Nhibernate,代替传统的sql语句的写法,更加使用面向对象的思维来维护实体与数据库的这层关系映射(ORM),好在之前接触过Java时学习使用了Hibernate, ...

随机推荐

  1. codechef 营养题 第一弹

    第一弾が始まる! 定期更新しない! 来源:http://wenku.baidu.com/link?url=XOJLwfgMsZp_9nhAK15591XFRgZl7f7_x7wtZ5_3T2peHh5 ...

  2. 【Codeforces 490C】Hacking Cypher

    [链接] 我是链接,点我呀:) [题意] 让你把一个字符串分成左右两个部分 形成两个正数 使得这两个正数一个能被a整除,一个能被b整除 找到任意一个解就可以 [题解] 枚举分割的断点i 枚举的时候用同 ...

  3. [USACO 4.2] 完美的牛栏

    ★★☆   输入文件:stall4.in   输出文件:stall4.out   简单对比 时间限制:1 s   内存限制:128 MB USACO/stall4(译by Felicia Crazy) ...

  4. 一些非常有用的工具类之javamail(from韩顺平)

    之前编写一个类淘宝服务器时,需要使用javamail发送邮件,搜到的一个工具类,很有用. 需要下载导入:activation.jar和mail.jar package com.cx.service; ...

  5. linux下安装并配置vim

    1.安装:sudo apt-get install vim-gtk  安装好后vim,并按“tab”键,可以看到vim的存在,则安装好2.设置更加人性化:sudo vim /etc/vim/vimrc ...

  6. java多线程编程核心技术(一)--多线程技能

    1.进程和线程的概念 1.进程:进程是操作系统的基础,是一次程序的执行,是一个程序及其数据在处理机上顺序执行时所发生的活动,是程序在一个数据集合上运行的过程,他是系统进行资源分配和调度的一个独立单位. ...

  7. codevs——1430 素数判定

    1430 素数判定  时间限制: 1 s  空间限制: 1000 KB  题目等级 : 青铜 Bronze 题解       题目描述 Description 质数又称素数.指在一个大于1的自然数中, ...

  8. php 生成订单号

    最近在练手一个订单提交的小项目,需要用到生成订单号,网上找了下,觉得这个最好. function build_order_no(){ return date('Ymd').substr(implode ...

  9. KonBoot – 只要5K映象文件轻易绕过您的WindowsXP/VISTA/7系统的密码

    http://pannisec.diandian.com/?tag=konBoot 这个东西是我昨晚点击了QQ弹窗的那个SOSO问题后,有人问我如何破解Windows登陆密码,且不可以用net命令创建 ...

  10. Centos 7 Apache编译安装

    1.安装apache ./configure --prefix=/usr/local/apache2 --enable-rewrite --enable-so --enable-headers --e ...