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. MSSQL获取指定日期的SQL语句

    --1.一个月第一天的 SELECT DATEADD(mm,DATEDIFF(mm,0,getdate()),0) --2.本周的星期一 SELECT DATEADD(wk,DATEDIFF(wk,0 ...

  2. JavaScript保留关键字(全)

    JavaScript 标准 所有的现代浏览器已经完全支持 ES5(ECMAScript 5). JavaScript 保留关键字(keyword) Javascript 的保留关键字(标识符)不可以用 ...

  3. Spring常用注解总结 hibernate注解

    1.@Resource和@Autowired @Resource和@Autowired功能一样在容器查找匹配的Bean @Autowired默认按照byType方式进行bean匹配,@Resource ...

  4. linux命令与技巧

    1.模糊查询:find / -name '*Eclipse*'2.获得管理员权限:sudo -i

  5. CODEVS1222 信与信封问题 (匈牙利算法)

    先做一遍匈牙利算法.对于已经匹配的边,如果删去之后还能最大匹配数增加,则不符合要求. 一遍匈牙利算法是O(n^3)的,对于每一条边做n次,每次O(n^2),总的复杂度是O(n^3). 注意:不要忘记输 ...

  6. poj 3074

    题意:解数独 分析: 完整的数独有四个充要条件: 1.每个格子都有填数字 2.每列都有1~9中的每个数字 3.每行都有1~9中的每个数字 4.每个9宫格都有1~9中的每个数字 可以转化成精确覆盖问题. ...

  7. A Simple Problem with Integers 线段树 区间更新 区间查询

    Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 115624   Accepted: 35897 Case Time Lim ...

  8. some notes about ADDM and AWR

    Use the sophisticated management and monitoring features of the Oracle DatabaseDiagnostic and Tuning ...

  9. CN Internet

    来自为知笔记(Wiz)

  10. TCP/IP具体解释学习笔记--TCP的坚持和保活定时器

    TCP的坚持定时器 1.基本概念 TCP的接收方指名希望从发送方接收的数据字节(窗体大小)来进行流量控制,假设窗体大小为0.那么放送方就会阻止发送数据,直到接收方发来一个已跟新窗体大小的ACK为止,那 ...