首页 > 开发 > 综合 > 正文

用Nhibernate怎么实现数据的添加、删除、修改简单程序

2024-07-21 02:23:32
字体:
来源:转载
供稿:网友
一、创建数据库

数据库名:nhibernate
use nhibernate
go
create 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

数据表:users



二、总体介绍

项目名:webnhibernate

界面:webform.aspx

具体表现文件:webform.aspx.cs

实体类文件:entityclass.cs

映射文件:userhbm.xml

配置文件:web.config



三、创建web界面

类型
对象名
text属性值

label
label1
id:

label
label2
姓名:

label
label3
密码:

label
label4
email:

label
labmessage


textbox
txtid


textbox
txtname


textbox
txtpassword


textbox
txtemail


button
butsave
添加

button
butdel
删除

button
butupdata
修改




四、创建映射文件(xml文件)和实体类

实体类

using system;

namespace webnhibernate

{

public class entityclass

{

private string id;

private string username;

private string password;

private string emailaddress;

public entityclass()

{}

public string id

{

get { return id; }

set { id = value; }

}

public string username

{

get { return username; }

set { username = value; }

}

public string password

{

get { return password; }

set { password = value; }

}

public string emailaddress

{

get { return emailaddress; }

set { emailaddress = value; }

}

}

}

映射文件:

<?xml version="1.0" encoding="utf-8" ?>

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">

<class name="webnhibernate.entityclass, webnhibernate" table="users">

<id name="id" column="logonid" type="string" length="20">

<generator class="assigned" />

</id>

<property name="username" column= "name" type="string" length="40"/>

<property name="password" type="string" length="20"/>

<property name="emailaddress" type="string" length="40"/>

</class>

</hibernate-mapping>

注意点:

1.<class name="webnhibernate.entityclass, webnhibernate" table="users">

webnhibernate.entityclass代表:实体类名

webnhibernate代表:该项目的装配集名称

users代表:数据表名

2.当属性列表<property name=”” column=””/>中既有name和column说明实体层的属性与数据表的字段名不同名

3.指定一个id, 在数据表中就是主键, 这个非常重要,nhibernate就是通过id来判断对象的唯一性的.



五、在配置文件中添加配置内容

1.首先在配置文件的<configuration>代码下面添加如下代码

<configsections>

<section name="nhibernate" type="system.configuration.namevaluesectionhandler, system, version=1.0.3300.0,culture=neutral, publickeytoken=b77a5c561934e089" />

</configsections>

这一段代码是必须要的

2.在配置文件的</system.web>代码下面添加如下代码

<nhibernate>

<!—连接数据提供者 -->

<add

key="hibernate.connection.provider"

value="nhibernate.connection.driverconnectionprovider"

/>

<!—连接数据方言最常用的是mssql2000dialect -->

<add

key="hibernate.dialect"

value="nhibernate.dialect.mssql2000dialect"

/>

<!—连接数据驱动类-->

<add

key="hibernate.connection.driver_class"

value="nhibernate.driver.sqlclientdriver"

/>

<!—连接数据库-->

<add

key="hibernate.connection.connection_string"

value="server=yanfa1;initial catalog=nhibernate;user id=sa;password=8626798;"

/>

</nhibernate>



六、实现代码


首先在文件头添加代码
using nhibernate;
using nhibernate.cfg;
1.添加数据:

双击“添加“按钮

private void butsave_click(object sender, system.eventargs e)

{

mcfg=new configuration();//创建配置类

mcfg.addxmlfile (system.web.httpcontext.current.server.mappath("userhbm.xml"));//指明映射文件userhbm.xml

entityclass ventity=new entityclass();

ventity.id=txtid.text;

ventity.username=txtname.text;

ventity.password=txtpassword.text;

ventity.emailaddress=txtemail.text;

isession vsession= mcfg.buildsessionfactory().opensession();//创建会话工厂, 一般来说应该使用一个单例对象来封装会话工厂.

itransaction vtransaction = vsession.begintransaction();//创建事物处理

try

{

vsession.save(ventity);//向数据库添加数据

vtransaction.commit();

labmessage.text="ok";

}

catch(exception ex)

{

vtransaction.rollback();

labmessage.text="error"+ex.tostring();

}

finally

{

vsession.close();

}

}



2.删除数据:


双击“删除“按钮
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();

try

{

entityclass ventity=(entityclass) vsession.load(typeof(entityclass),txtid.text);//查找数据表中所要记录

vsession.delete(ventity);//向数据库删除数据

vtransaction.commit();

labmessage.text="ok";

}

catch(exception ex)

{

vtransaction.rollback();

labmessage.text="error";

}

finally

{

vsession.close();

}

}



3.修改代码:


双击“修改“按钮
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();

try

{

entityclass ventity=(entityclass) vsession.load(typeof(entityclass),txtid.text);

ventity.username=txtname.text;

ventity.password=txtpassword.text;

ventity.emailaddress=txtemail.text;

vsession.update(ventity); //向数据库修改数据

vtransaction.commit();

labmessage.text="ok";

}

catch(exception ex)

{

vtransaction.rollback();

labmessage.text="error";

}

finally

{

vsession.close();

}

}

因本人也是刚接触nhibernate不久,还有好多技术难点不怎么明白,还需多加努力,愿与大家一起探讨。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表