NHibernate系列学习(二)-使用sql和hql以及linq
2024-08-30 01:10:52
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.代码下载
最新文章
- 《Markdown 一些基本语法》
- java 中hashmap和hashtable的区别
- eclipse安装插件的各种方法
- PostgreSQL解决";Abc_de_fghijkl_mn"; 首字母小写去掉下划线并且下划线后面的第一个字母大写或首字母大写去掉下划线并且下划线后面的首字母大写的js
- 如何获取Window
- easyui源码翻译1.32--Layout(布局)
- 禁止选择文本和禁用右键 v1.0
- NDK开发之获得域和方法描述符
- javascript的框架演化
- 几种不同存储形式下的数据挖掘问题[ZZ]
- NYOJ 5 Binary String Matching
- 史上最强学生管理系统之ArrayList版
- robotframework自动化系统:操作mysql数据库
- Java A+B(个人模版)
- PHP将HTML的内容保存成word文档
- [LeetCode] Tag Validator 标签验证器
- 卷积神经网络之VGG
- alpha冲刺(2/10)
- 转 Velocity中加载vm文件的三种方式
- Linux十字病毒查杀处理
热门文章
- 数据库——mysql如何获取当前时间---https://www.cnblogs.com/Chenshuai7/p/5136469.html
- javamail中的 javax.mail.AuthenticationFailedException: failed to connect的解决
- - >; 贪心基础入门讲解四——独木舟问题
- - >; 动规讲解基础讲解四——矩阵取数
- SiteMesh2-sitemesh.xml的ParameterDecoratorMapper映射器的用法
- Jupyter Notebook: 解决build docker-stacks时conda太慢的问题
- golang 中timer,ticker 的使用
- Linux网络编程:UDP实现可靠的文件传输
- 玩转iOS开发 - 视图控制器生命周期
- Android高仿UC浏览器和360手机卫士消息常驻栏(通知栏)