|
it();
}
catch (Exception)
{
//出错后,事务回滚
trans.Rollback();
}
}
//查询用户
private void btnFind_Click(object sender, EventArgs e)
{
//trans = session.BeginTransaction();
//查找ID编号为2的人
//2-->ID属性——OR——>SQL的Where语句
Person p = (Person)session.Get(typeof(Person), int.Parse(this.txtID.Text));
//Console.WriteLine(p.ToString());
this.txtName.Text = p.Name;
}
//删除用户
private void btnDelete_Click(object sender, EventArgs e)
{
try
{
//开启事务
trans = session.BeginTransaction();
//根据提供的ID查找该对象
Person p = (Person)session.Get(typeof(Person), int.Parse(this.txtID.Text));
//对象删除
session.Delete(p);
trans.Commit();
}
catch (Exception)
{
trans.Rollback();
}
}
//更新用户
private void btnUp_Click(object sender, EventArgs e)
{
try
{
//开启事务
trans = session.BeginTransaction();
//根据提供的ID查找该对象
Person p = (Person)session.Get(typeof(Person), int.Parse(this.txtID.Text));
//修改对象属性
p.Name = this.txtName.Text;
session.Update(p);
trans.Commit();
}
catch (Exception)
{
trans.Rollback();
}
}
//IQuery接口,是针对对象查询
private void btnHQL_Click(object sender, EventArgs e)
{
//HQL体验——HQL是针对对象的查询语言
//查询所有人的信息
//IQuery query = session.CreateQuery("from Person");
//IList persons = query.List();
//persons.p1();
//查询编号为2的人的信息
//IQuery query = session.CreateQuery("from Person where Id=3");
//query.List().p1();
//查询名字中有字母a的人
//session.CreateQuery("from Person where Name like '%a%'").List().p1();
//session.CreateQuery("from Person where t_Name like '%a%'").List().p1();
//session.CreateQuery("from Person where name like '%a%'").List().p1();//错误
//查找全部
//session.CreateQuery("select p from Person p").List().p1();
//session.CreateQuery("select * from Person ").List().p1();//错误,没有*
//查找编号大于5的人的信息
//session.CreateQuery("from Person p where p.Id>5 ").List().p1();
//聚合函数的使用--统计人数
//session.CreateQuery("select count(p.Id) from Person p ").List().p2();
//传参1
//IQuery query = session.CreateQuery("from Person p where p.Id> ");
//query.SetParameter(0,7);
//query.List().p1();
//传参2
//IQuery query = session.CreateQuery("from Person p where p.Id>:id");
//query.SetParameter("id", 7);
//query.List().p1();
//插入数据——Insert/Update/Delete不建议在HQL里面操作
//IQuery query = session.CreateQuery("insert into t_Person(t_Name) values( )");
//query.SetParameter(0,"kkk");
//query.ExecuteUpdate();
//查询指定范围的数据——查询第3-7条记录
IQuery query = session.CreateQuery("from Person");
query.List().Skip(3).Take(5).ToList(); ;
//用ICriteria来实现该功能可能更方便
}
//对IList类型数据的输出,建议用C#3.0的拓展方法来实现
public static class ExtraClass
{
public static void p1(this IList p)
{
//获取可枚举的接口对象
IEnumerator ie = p.GetEnumerator();
Console.WriteLine("\n-----------------------\n");
//遍历
while (ie.MoveNext())
{
Console.WriteLine(ie.Current.ToString());
}
Console.WriteLine("\n-----------------------\n");
}
public static void p2(this IList p)
{
IEnumerator ie = p.GetEnumerator();
Console.WriteLine("\n-----------------------\n");
while (ie.MoveNext())
{
Console.WriteLine(ie.Current.ToString());
}
Console.WriteLine("\n-----------------------\n");
}
}
}
}
总结:对于NHibernate的操作,本文通过五部曲进行细致的讲解:1 |