Nhibernate2.0+oracle10g+VS2008 第一个例子成功通过
来源:互联网 发布:linux 自动解压war包 编辑:程序博客网 时间:2024/06/02 02:26
学习Nhibernate有几天了,之前很久的一段时间,也许有两年前吧,小猪就给我灌输了ORM的思想,Hibernate在Java里是如何如何的好用,可是一直都没接触过JAVA,所以没什么感觉。最近项目都完成的差不多了,也有时间坐下来学习学习,给自己充充电了。就先学学很多人都不用的Nhibernate——因为LinQ的出现,似乎比Nhibernate更好。
基本思想搞明白了,要做个例子,先有个感性认识。下载了Nhibernate的2.0版本。下载了一些例子,可大多例子都是用SQL Server,没有用Oracle10g的,那就在原来的基础上改改看吧。
*********库中建立表student
1、App.config——C/S版本的
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>
<nhibernate>
<add key="hibernate.show_sql" value="false"/>
<add key="hibernate.dialect" value="NHibernate.Dialect.Oracle9Dialect"/>
<add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
<add key="hibernate.connection.driver_class" value="NHibernate.Driver.OracleClientDriver"/>
<add key="hibernate.connection.connection_string" value="Data Source=orcl12;User Id=code;Password=code"/>
<add key="hibernate.query.substitutions" value="true=1;false=0"/>
</nhibernate>
</configuration>
只需要修改蓝色地方,就可以连接数据库了。
2、类文件
class Student
{
public virtual int Num { get ; set ; }
public virtual string Name { get ; set ; }
public virtual string Age {get ; set ; }
}
3、映射文件
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name=" NhibernateSample1.Missile,NHibernateSample1" table="code.missiletab">
<id name="Num" column="num" type="int" >
<generator class="assigned" />
</id>
<property name="Name" column="name" type="String" length="20" />
<property name="Weight" column="age" type="String" length="20"/>
</class>
</hibernate-mapping>
*********映射文件主要是将类和数据表的字段相关联,类的属性对应表的字段
4、程序实现数据读、增、删、改
public static void Main()
{
Configuration cfg = new Configuration();
cfg.AddAssembly("NhibernateSample1");
ISessionFactory factory = cfg.BuildSessionFactory();
ISession session = factory.OpenSession();
ITransaction transaction;
ICriteria criteria = session.CreateCriteria(typeof(Missile));
do
{
Console.WriteLine("现在数据表中的数据如下:");
IList MissileList = session.CreateCriteria(typeof(Missile)).List();
foreach (Missile missile in MissileList)
{
Console.WriteLine("姓名:" + missile.Name + ";编号:" + missile.Num + ";年龄:" + missile.Age);
}
Console.WriteLine("请选择您要进行的操作:添加数据“A”,修改数据“M”,删除数据“D”,查询数据“Q”,排序数据“O”,退出“E”");
string input = Console.ReadLine();
switch (input)
{
case "m":
transaction = session.BeginTransaction();
Console.WriteLine("请输入您要修改的数据项的编号:");
Missile modMissile = (Missile)session.Get(typeof(Missile), int.Parse(Console.ReadLine()));
Console.WriteLine("请输入您要修改的名称:");
modMissile.Name = Console.ReadLine();
Console.WriteLine("请输入您要修改的年龄:");
modMissile.Weight = Console.ReadLine();
transaction.Commit();
Console.WriteLine("数据修改成功!");
break;
case "d":
transaction = session.BeginTransaction();
Console.WriteLine("请输入您删除的数据项的编号:");
Missile delMissile = (Missile)session.Get(typeof(Missile), int.Parse(Console.ReadLine()));
session.Delete(delMissile);
transaction.Commit();
Console.WriteLine("数据删除成功!");
break;
case "a":
transaction = session.BeginTransaction();
Missile newMissile = new Missile();
Console.WriteLine("请输入您要添加的编号:");
newMissile.Num =int.Parse(Console.ReadLine());
Console.WriteLine("请输入您要添加的名称:");
newMissile.Name = Console.ReadLine();
Console.WriteLine("请输入您要添加的年龄:");
newMissile.Weight = Console.ReadLine();
session.Save(newMissile);
transaction.Commit();
Console.WriteLine("数据添加成功!");
break;
case "q":
criteria.Add(Expression.Gt("Num",2));
IList crilist = criteria.List();
Console.WriteLine("通过Criteria方式,您要查询的编号大于2的数据为:");
foreach (Missile missile in crilist)
{
Console.WriteLine("名称:" + missile.Name + ";编号:" + missile.Num + ";年龄:" + missile.Age );
}
IQuery query = session.CreateQuery("from Missile missile where missile.Num<2");
IList quelist = query.List();
Console.WriteLine("通过HQL方式,您要查询的编号小于2的数据为:");
foreach (Missile missile in quelist)
{
Console.WriteLine("名称:" + missile.Name + ";编号:" + missile.Num + ";年龄:" + missile.Age );
}
break;
case "o":
Console.WriteLine("请选择您要排序的方式:升序“A”,降序“D”");
if (Console.ReadLine() == "a")
{
criteria.AddOrder(Order.Asc("Mum"));
IList asclist = criteria.List();
Console.WriteLine("按照升序方式排序后的数据为:");
foreach (Missile missile in asclist)
{
Console.WriteLine("名称:" + missile.Name + ";编号:" + missile.Num + ";年龄:" + missile.Age );
}
}
else
{
criteria.AddOrder(Order.Desc("Num"));
IList dsclist = criteria.List();
Console.WriteLine("按照降序方式排序后的数据为:");
foreach (Missile missile in dsclist)
{
Console.WriteLine("名称:" + missile.Name + ";编号:" + missile.Num + ";年龄:" + missile.Age);
}
}
break;
case "e":
return;
default:
Console.WriteLine("请输入正确的选项!");
break;
}
Console.ReadLine();
}
while (Console.ReadLine() != "e");
session.Close();
}
***************Ok了,下一步就是具体的研究了,向前进,向前进………………
- Nhibernate2.0+oracle10g+VS2008 第一个例子成功通过
- 成功运行RMI的第一个例子
- Struct2.0第一个例子
- 2.0.0-CodeSminth 第一个例子
- OpenGL es2.0 第一个例子
- 5、第一个例子
- opengl 第一个例子
- hibernate第一个例子
- ajax 第一个例子
- JavaBeans第一个例子
- SiteMesh第一个例子
- Mina第一个例子
- Hibernate---->第一个例子
- Servlet第一个例子
- struts2第一个例子
- struts2第一个例子
- zTree第一个例子
- AJAX 第一个例子
- 浅谈.NET中的数据绑定表达式(一)
- snoopy——PHP版的网络客户端
- Cetia4 1.1文档 -1.2 Rest 框架
- 如何在VC++6.0下实现Unicode编程
- 贴现率与再贴现率
- Nhibernate2.0+oracle10g+VS2008 第一个例子成功通过
- 浅谈.NET中的数据绑定表达式(二)
- VC使用及调试相关小技巧
- Set up Selenium Environment
- Linux中的远程连接 SSH and VNC图形模式
- 新的V2XE型地磁传感器在单片机水工业系统中的应用
- cron的使用(一)
- 加密.swf文件
- 轻松几步获得上万点击率(十)网页减肥