新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论Java, J2SE, J2ME, J2EE, 以及Eclipse, NetBeans, JBuilder等Java开发环境,还有JSP, JavaServlet, JavaBean, EJB以及struts, hibernate, spring, webwork2, Java 3D, JOGL等相关技术。
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机技术与应用『 Java/Eclipse 』 → 用Nhibernate怎么实现数据的添加、删除、修改简单程序 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 5330 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 用Nhibernate怎么实现数据的添加、删除、修改简单程序 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     npuhetao 帅哥哟,离线,有人找我吗?
      
      
      威望:5
      头衔:骨灰级菜鸟
      等级:大二(研究C++)
      文章:230
      积分:2708
      门派:XML.ORG.CN
      注册:2004/3/18

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给npuhetao发送一个短消息 把npuhetao加入好友 查看npuhetao的个人资料 搜索npuhetao在『 Java/Eclipse 』的所有贴子 引用回复这个贴子 回复这个贴子 查看npuhetao的博客楼主
    发贴心情 用Nhibernate怎么实现数据的添加、删除、修改简单程序

    一、创建数据库

    数据库名: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不久,还有好多技术难点不怎么明白,还需多加努力,愿与大家一起探讨


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    你硬要把单纯的事情看得很严重,那样子你会很痛苦。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/3/14 13:45:00
     
     xmzhy 帅哥哟,离线,有人找我吗?狮子座1978-8-18
      
      
      威望:5
      等级:计算机学士学位
      文章:385
      积分:2003
      门派:XML.ORG.CN
      注册:2003/10/22

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给xmzhy发送一个短消息 把xmzhy加入好友 查看xmzhy的个人资料 搜索xmzhy在『 Java/Eclipse 』的所有贴子 引用回复这个贴子 回复这个贴子 查看xmzhy的博客2
    发贴心情 
    ding
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/3/15 9:50:00
     
     GoogleAdSense狮子座1978-8-18
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Java/Eclipse 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/9/13 9:53:52

    本主题贴数2,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    78.125ms