用Nhibernate怎么实现微信的数据文件可以删除吗的添加,删除,修

二、使用NHibernate对数据库实现增、删、改、查操作
NHibernate是使用ISession对象实现对数据库的增、删、改、查工作的。
一、对数据库的查询:
NHibernate对数据库的查询可以使用四种方式来实现:
使用ISession对象的方法来实现查询
使用HQL语句来实现查询
使用Criteria实现查询
使用原始SQL语句来实现查询&&&
1、使用ISession对象的Get()方法来根据主键查询对象&&
ISession.Get&T&(object
通常使用这种方法来根据主键Id值来查询对象的,并返回查询到的实体对象。
2、使用HQL语句来实现查询。&&
为了实现对对象的灵活操作,NHibernate也引入了Hibernate查询语言(HQL,NHibernate Query
Language),这种语句与SQL语句很像,但它是基于面向对象查询语言。它实际上是用OOP中的对象和属性映射了数据库中的表和列。
&& 例如这一句:select c.Firstname from Customer
Customer是一个对象,Firstname是Customer对象的属性。
在这里主要讨论一下from子句,select子句,where子句,order by子句,group
by子句几个常用的子句。
from子句:&&
如“from Fruit”:就是取出Fruit实体类所映射的表的所有记录。还可以加上别名“from Fruit as
&&& public IList&Fruit&
IList&Fruit& list =
_Session.CreateQuery("from
Fruit").List&Fruit&();
这里返回的是Fruit实体对象的集合。
select子句:&&&
用来指定要从实体类所对应的表中检索出哪些属性。
&&& public
IList&object[]&
SelectAll()
IList&object[]& list =
_Session.CreateQuery("select f.Id,f.Name,f.Price from Fruit
").List&object[]&();&&&&&&&
由于只是查询了有限的列出来,所以返回的不是实体对象的集合,而是object[]数组的集合。只要在select子句中指定多列,就不能返回实体对象的集合,而是返回object[]的集合。
另外需要注意的是:HQL语句中实体类的名子和属性的名子大小写敏感。&&&
下面的代码是只查询不重复的Stack属性值的集合,由于查询结果只有一列,所以返回一个字符串的集合就可以了。
&&& public
IList&string&
GetStacks()
IList&string& list =
_Session.CreateQuery("select distinct f.Stack from Fruit as
f").List&string&();&&&&&&&
where子句:
用来从实体类对应的表中筛选出指定的对象集合。我们所知道的where中的and、or、not、is、like、between、in、&、&、=等等都可以直接拿来使用,
&&& select p.Name from Person p where p.Age &
&&& from Person
p where p.Age between 20 and 30
&&& from person
p where p.Age in (20,30)
&&& from person
p where p.Name is null
&&& from person
p where p.Name like
'Jaki%'&&&
那如何在where子句中使用参数呢?比如我们要做一个登录,需要根据用户名和密码查询,那我们的HQL语句应当使用变量参数,变量参数以":参数名"的形式表示
&&& from Login as login where login.Id=:u
login.Password=:p&&&
那我们如何给:u和:p赋值呢?我们可以使用IQuery的SetXXX()方法(SetString(),SetBoolean(),SetInt32()......)来为参数赋值
下面是我们登录的代码段:
&&& public bool Select(string uid, string pwd)
//IList&Login& list =
_Session.CreateQuery("from Login as login where login.Id='"+uid+"'
login.Password='"+pwd+"'").List&Login&();
//IList&Login& list =
_Session.CreateQuery("from Login as login where login.Id=? and
login.Password=?").SetString(0,uid).SetString(1,pwd).List&Login&();
IList&Login& list =
_Session.CreateQuery("from Login as login where login.Id=:u
login.Password=:p").SetString("u",uid).SetString("p",pwd).List&Login&();
return list.Count & 0 ? true :
书写HQL参数有四种写法:
写法1:可能会引起SQL注入,不要使用。
写法2:ADO.NET风格的?参数,NHibernate的参数从0开始计数。
写法3:命名参数用:name的形式在查询字符串中表示,这时IQuery接口把实际参数绑定到命名参数。
写法4:命名的参数列表,把一些参数添加到一个集合列表中的形式,比如可以查询数据是否在这个集合列表中。
by子句与group by 子句与SQL语法很像,在此不多说了,代码如下。
&&& public IList&Customer&
return _session.CreateQuery("select from Customer c order
by c.Firstname asc,c.Lastname
desc").List&Customer&();&&&
&&& public
IList&object[]& Groupby()
return _session.CreateQuery("select c.Firstname,
count(c.Firstname) from Customer c group by
c.Firstname").List&object[]&();&&&
3.使用Criteria实现查询
虽然HQL功能强大,但在程序中嵌入字符串给人的感觉不是很舒服,那我们还可以采用Criteria查询,Criteria是通过一组条件表达式(expression_r)来加载数据的,它返回满足条件的对象集合。
主要接口为ICriteria,nhibernate在session对象中为我们提供了一个方法CreateCriteria,此方法返回ICriteria接口。
下面我们看一下如何使用Criteria查询
&&& public IList&Fruit&
//生成ICriteria引用实例
ICriteria crit =
_Session.CreateCriteria(typeof(Fruit));&&&&&&&
//按照Price字段升序排列
crit.AddOrder(new NHibernate.Criterion.Order("Price",
true));&&&&&&&
//添加价格在1-5元之间的查询条件
crit.Add(Restrictions.Between("Price", 1,
5));&&&&&&&
//添加货架在1,3,5,2货架的查询条件
crit.Add(Restrictions.In("Stack", new string[] { "1", "3",
}));&&&&&&&
//从第6条记录开始查询
crit.SetFirstResult(6);&&&&&&&
//每次查询出来的最多记录条数
crit.SetMaxResults(2);&&&&&&&
//返回泛型集合
IList&Fruit& list =
crit.List&Fruit&();
主要方法:
SetMaxResults:设置返回的最大结果数,可用于分页;
SetFirstResult:设置首个对象返回的位置,可用于分页;
Add:加入条件表达式(expression_r对象),此方法可多次调用以组合多个条件;
AddOrder:加入排序的字段(Order对象);
List:返回满足条件的对象集合。
expression_r是一个abstract(抽象)类,它通过一组static方法实现Factory
Method(工厂方法)模式,这些static方法返回的都是expression_r类的子类,下面列出一些常用的:
Eq:这是一个相等判断的表达式;
Like:这是一个like判断的表达式;
Gt:这是一个大于判断的表达式;
And:这是两个表达式And操作后的表达式;
Or:这是两个表达式Or操作后的表达式;
Between:这是一个范围筛选的条件表达式,在两个数之间的范围。
In:这也是一个范围筛选的条件表达式,在多个离散的值中进行筛选。
下面以几个例子来说明Criteria数据加载的用法:
取得用户名(username)为billy的用户对象:
expression_r ex = expression_r.Eq(
"Username", "billy" );
IList users = session.CreateCriteria(typeof(User)).Add( ex
2.取得用户名(username)为billy, 密码为123456的用户对象
expression_r ex = expression_r.And(
expression_r.Eq("Username", "billy"),
expression_r.Eq("Password", "123456") );
IList users = session.CreateCriteria(type(User)).Add( ex
取得数据中第20-40的用户对象。
IList users =
session.CreateCriteria(typeof(User))
.SetFirstResult(20).SetMaxResults(40)
对于SQLSERVER,数据定位采用的是IDataReader前滚至firstResult处,然后取maxResults条记录。
取得按注册日期(Regdate)降序排序后的用户对象.
ICriteria c =
session.CreateCriteria(typeof(User));&&&&&&&
IList users = c.AddOrder( Order.Desc("Regdate")
二、向数据库新增记录
1.新建对象;
2.调用ISession.Save();
3.调用Flush()同步到数据库。&&&
public void Insert(Fruit
_Session.Save(fruit);
_Session.Flush();&&&
三、修改记录
1.获取对象;
2.修改它的一些属性;
3.调用ISession.Update();
4.调用Flush同步到数据库。&&&
public void Update(Fruit
_Session.Update(fruit);
_Session.Flush();&&&
}四、删除记录
1.获取要删除的对象;
2.调用ISession.Delete();
3.调用Flush同步到数据库。
&&& public void Delete(Fruit fruit)
_Session.Delete(fruit);
_Session.Flush();&&&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。用Nhibernate怎么实现数据的添加、删除、修改简单程序 - surprise - 博客园
随笔 - 30, 文章 - 0, 评论 - 327, 引用 - 11
Nhibernate
Nhibernateuse NHibernategoCREATE TABLE users (&&&LogonID nvarchar(20) NOT NULL default '0',& Name nvarchar(40) default NULL,& Password nvarchar(20) default NULL,& EmailAddress nvarchar(40) default NULL,& PRIMARY KEY& (LogonID))go
WebNhibernate
WebForm.aspx
WebForm.aspx.cs
EntityClass.cs
Userhbm.xml
Web.config
Labmessage
TxtPassword
public class EntityClass
&&&& private string userN
&&&& private string emailA
public EntityClass()
public string Id
&&&& get { }
&&&& set { id = }
public string UserName
&&&& get { return userN }
&&&& set { userName = }
public string Password
&&&& get { }
&&&& set { password = }
public string EmailAddress
&&&& get { return emailA }
&&&& set { emailAddress = }
&class name="WebNhibernate.EntityClass, WebNhibernate" table="users"&
&id name="Id" column="LogonId" type="String" length="20"&
&&&& &generator class="assigned" /&
&&&& &property name="UserName" column= "Name" type="string" length="40"/&
&&&& &property name="Password" type="string" length="20"/&
&&&& &property name="EmailAddress" type="String" length="40"/&
WebNhibernate代表:该项目的装配集名称
2””””
id, , ,nhibernateid.
&&&&&&& &section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.3300.0,Culture=neutral, PublicKeyToken=b77a5c" /&
&/configSections&&
&&&& key="hibernate.connection.provider"&&&&&&&&&
&&&& value="NHibernate.Connection.DriverConnectionProvider"
&&&& key="hibernate.dialect"&&&&&&&&&&&&&&&&&&&&&
&&&& value="NHibernate.Dialect.MsSql2000Dialect"
&&&& key="hibernate.connection.driver_class"&&&&&&&&&
&&&& value="NHibernate.Driver.SqlClientDriver"
&&&& key="hibernate.connection.connection_string"
&&&& value="Server=yanfa1;initial catalog=User id=password=8626798;"
using NHusing NHibernate.C1.添加数据:
&&&& mCfg=new Configuration();//
&&&& mCfg.AddXmlFile (System.Web.HttpContext.Current.Server.MapPath("Userhbm.xml"));//
&&&& EntityClass vEntity=new EntityClass();
&&&& vEntity.Id=TxtId.T
&&&& vEntity.UserName=TxtName.T
&&&& vEntity.Password=TxtPassword.T
&&&& vEntity.EmailAddress=TxtEmail.T
&&&& ISession vSession= mCfg.BuildSessionFactory().OpenSession();//
&&&& ITransaction vTransaction = vSession.BeginTransaction();//创建事物处理
&&&& vSession.Save(vEntity);//向数据库添加数据
&&&& </mit();
&&&& Labmessage.Text="OK";
&&&& catch(Exception ex)
&&&& vTransaction.Rollback();
&&&& Labmessage.Text="Error"+ex.ToString();
&&&& finally
&&&& vSession.Close();
&&&&&&&&private void ButDel_Click(object sender, System.EventArgs e)
&&&& mCfg=new Configuration();
&&&& mCfg.AddXmlFile (System.Web.HttpContext.Current.Server.MapPath("Userhbm.xml"));
&&&& ISession vSession= mCfg.BuildSessionFactory().OpenSession();
&&&& ITransaction vTransaction = vSession.BeginTransaction();
&&&& EntityClass vEntity=(EntityClass) vSession.Load(typeof(EntityClass),TxtId.Text);//查找数据表中所要记录
&&&& vSession.Delete(vEntity);//向数据库删除数据
&&&& </mit();
&&&& Labmessage.Text="OK";
&&&& catch(Exception ex)
&&&& vTransaction.Rollback();
&&&& Labmessage.Text="Error";
&&&& finally
&&&& vSession.Close();
&&&&&&&&private void ButUpdata_Click(object sender, System.EventArgs e)
&&&& mCfg=new Configuration();
&&&& mCfg.AddXmlFile (System.Web.HttpContext.Current.Server.MapPath("Userhbm.xml"));
&&&& ISession vSession= mCfg.BuildSessionFactory().OpenSession();
&&&& ITransaction vTransaction = vSession.BeginTransaction();
&&&& EntityClass vEntity=(EntityClass) vSession.Load(typeof(EntityClass),TxtId.Text);
&&&& vEntity.UserName=TxtName.T
&&&& vEntity.Password=TxtPassword.T
&&&& vEntity.EmailAddress=TxtEmail.T
&&&& vSession.Update(vEntity); //向数据库修改数据
&&&& </mit();
&&&& Labmessage.Text="OK";
&&&& catch(Exception ex)
&&&& vTransaction.Rollback();
&&&& Labmessage.Text="Error";
&&&& finally
&&&& vSession.Close();
}因本人也是刚接触Nhibernate不久,还有好多技术难点不怎么明白,还需多加努力,愿与大家一起探讨。&&&&&&&&&&&&NHibernate-中删除数据的几种方法
正在努力加载播放器,请稍等…
正在努力加载播放器
大小:62.75KB&&所需金币:50
&& & 金币不足怎么办?
下载量:-次 浏览量:439次
贡献时间: 18:30:00
文档标签:
已有-位用户参与评分
同类热门文档
你可能喜欢
看过这篇文档的还看过
阅读:522&&下载:3
阅读:405&&下载:3
阅读:142&&下载:3
阅读:209&&下载:1
阅读:90&&下载:0
阅读:401&&下载:0
阅读:103&&下载:0
阅读:92&&下载:0
阅读:66&&下载:0
阅读:83&&下载:0
该用户的其他文档
所需财富值:
50文件大小:62.75KB
您当前剩余财富值:&&
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
举报该文档侵犯版权。
例: /help.shtmlNhibernate的数据分页技术(续)
Nhibernate的数据分页技术(续),Nhibernate的数据分页技术(续)
Nhibernate的数据分页技术(续) 我在前面介绍过了怎么在Nhibernate中实现数据添加、修改和删除。有感兴趣的朋友请参考/surprise/archive//51701.aspx。在这里讲的是续前面的内容。1. 界面添加类型对象名Text属性值ButtonButton1显示DataGridDataGrid1 2. 代码的实现双击&#8220;显示&#8221;按钮private void Button1_Click(object sender, System.EventArgs e){ NhDataBind();}private void NhDataBind()//数据绑定代码{ mCfg=new Configuration(); mCfg.AddXmlFile (System.Web.HttpContext.Current..MapPath("Userhbm.xml")); ISession vSession= mCfg.BuildSessionFactory().OpenSession(); ITransaction vTransaction = vSession.BeginTransaction(); try { IList vList=vSession.Find("from WebNhibernate.EntityClass");//HQL语句实现数据查询 DataGrid1.DataSource=vL DataGrid1.DataBind(); mit(); Labmessage.Text="OK"; } catch(Exception ex) { vTransaction.Rollback(); Labmessage.Text="Error"; } finally { vSession.Close(); }} 创建DataGird事件处理private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e){ DataGrid1.CurrentPageIndex=e.NewPageI NhDataBind();}终于完成啦整个小东东,愿与大家一起分享。
来源:/n/7501.html
点击查看更多与《》相关的文章>>
《黑暗之魂2》戟数据分析及实用技巧分享,《黑暗之魂2》是一款以高难度著称的动作类角色扮演游戏《黑暗之魂》的续作。下面为大家带来《黑暗之魂2》戟数据分析及实用技巧。
《NBA 2K15》MC模式刷数据及刷VC心得技巧分享,《NBA 2K15》游戏中MC模式深受玩家们喜爱,今天和大家分享下玩家的MC模式刷数据及刷VC心得技巧,来看看吧!
通过数据捆绑将数据添加到ASP.NET 页面,通过数据捆绑将数据添加到ASP.NET 页面
《仙剑5前传》合击技 公式数据伤害详细分析,说起合击,《仙剑4》、《仙剑5》中就已经融入战斗系统了,那么对于《仙剑5 前传》前来说,合击又有哪些改动呢,下面为玩家们带来详细的数据分析,合击伤害到底与哪些因素有关。
数据库连接字符串的小技巧,数据库连接字符串的小技巧
现在玩wps的人越老越多,wps中的各种小秘密都公之于众,但是总会有你不知道的小秘密,今天小编给大家分享一个wps小技巧,看完你就会觉得你知道的太少了,赶紧来学习吧!
热门搜索:
Excel工作表无法取消隐藏的方法
怎么提取空格前后的数据
在word文档怎么使用修订和批注功能
将开始菜单里的所有程序隐藏方法
慢阻肺是一种慢性阻塞性肺部疾病,常发于烟民,长期在有害气体环境下生活的人也有一定几率患病,慢阻肺早期会出现慢性咽炎、咳嗽等现象,针对不同时期的慢阻肺疾病,我们可以通过以下方法来缓解治疗。
一说到高钙血症很多人便会想起血栓结石等疾病,人们的普遍印象高钙血症即是由肿瘤及肾衰竭疾病引起,由于高钙浓度过高导致,除此之外还有很多原因会引发高钙血症疾病,接下来我们就一起来研究高钙血症引发的原因吧!
桂枝汤是一剂有效的解表剂,具有多种资料功效,常见的有感冒呕吐盗汗等现象。在服用桂枝汤期间,需要注意一些问题,通过以下内容我们一起来看看服用桂枝汤需要注意的一些问题。
今天韩国方面传出好消息,指Rain及金泰希将荣升父母,金泰希所属公司LUA娱乐宣布金泰希目前已怀孕15周的喜讯,并表示她在短时间内会集中在胎教上。喜讯一出获大批粉丝送上祝福。那么怀孕15周需要注意什么?怀孕15周可以同房吗?
Photoshop是我们办公和学习时经常用到一个修图软件,Photoshop是目前所有修图软件中最为强大的一个软件。我们可以用Photoshop制作一些图形或者图标。那么,怎样用Photoshop制作立体木盒图标呢?下面就一起来看看。
iPhone手机是现在人们日常生活中经常使用的一种通讯工具。而iPhone6s因为性价比较高被许多人喜爱着。但是在我们使用iPhone6s的过程中,有时候会出现一些问题,此时我们需要拆机检查修理。那么,iPhone6s如何拆机呢?下面就分享一下iPhone6s的拆机教程。
photoshop是我们日常工作中常见的一种修图工具,与其他修图软件相比,photoshop的功能非常强大。在用photoshop修图时,经常会需要给景点制造一些特殊的自然风光效果。那么,如何用photoshop给长城制造夕阳效果?下面就一起来看看吧。
2017年最受欢迎的生活服务APP!!生活服务类App的出现为日常生活带来极大便利,我们可以通过手机客户端预约各种家政服务,足不出户就能够享受实惠、便捷的生活服务,那么接下来我为大家推荐一些生活中必备生活app。
由于现在抢红包大热起来,很多app都开始支持发红包抢红包了,因此也出现了微信抢红包神器,可以自动抢微信红包,肯定比认为手动操作快,有消息就会自动打开,然后打开红包。今天就给大家分享2017微信自动抢红包神器大全。
2017手机赚钱软件排行榜!!很多朋友都在苦恼每天的钱不够话,空闲时间不知道怎么打发,总想寻找一种简单的赚钱方式,我们的手机app就有很多,下面具体给大家介绍手机赚钱软件有哪些,总有一款你中意的。
经常玩微信的朋友都知道,微信小程序已经全面上线了,对于小程序的出现是否会引发App变革众说纷纭,但不可否认的是小程序能够带给用户及产商一定的便利,那么今天为大家汇总目前上线的一些实用小程序。
男女交往一直都是人们比较关注的一个问题,都说相爱容易,相处不易,交往过的朋友应该都能深刻的体会到,女生常常抱怨着让男生理解自己,但男生也希望多体谅一下他们。尤其不要老是问一些无法回答的问题来考验他们。
很多朋友都信风水一说,对于自己家里房屋客厅的装修也是有一定要求的,因为客厅的风水关系着整个家居的运势,更关系着主人的财运与健康,因而客厅里的风水禁忌是需要我们谨慎注意的,那么风水学中客厅风水禁忌有哪些呢?
春天已经来临了,夏天也不远了,新的一才刚刚开始,时尚爱美的美眉们最关注的就是春夏服装设计的流行趋势了,早早的把握住时尚趋势走在流行的最尖端,今天就给大家整理分享2017春夏女装设计流行趋势 ,你绝对不能错过的亮点。&&我,技术人,身体变胖,头脑依然灵活,喜欢Erlang .net,非著名技术博客,翻译过大师经典文章,也原创了不少.在技术之路上沉思,不断重构着不太优秀的自己.爱生活,爱Erlang!

我要回帖

更多关于 微信的数据文件可以删除吗 的文章

 

随机推荐