使用VS2015和Nhibernate实现与MySql数据库连接,实现增删改查操作
2016-05-08 16:16
846 查看
准备工具:VS2015(版本不限) ,Nhibernate包,和MySql ,MySQL-FRONT ,Connector/Net(选择.Net&Mono)
Nhibernate包可以在VS2015中下载 ,对MySql操作,我用的是MySQL-FRONT,注意要想实现和数据库的链接Connector/Net这个是必须要下的,下完之后会有几个dll文件,然后添加到引用里面去就好了。
先写一个简单的给你定义的数据库中添加一条元素的代码:(不使用Nhibernate的)
前提:先把该用的dll文件,添加到引用里面去不然,会连接不成功,之前下载的Connector/Net(选择.Net&Mono)里面主要有这么几个dll文件,如下:
mysql.data.dll
mysql.data.entity.dll
mysql.visualstudio.dll
mysql.web.dll
步骤:1.打开数据库,新建一个数据库,名字随意,添加一个表,名字随意,然后添加两个字段,一个字段名称为name,一个为age,好了表建好之后,我们开始使用很简单很简单一个C#连接MySql数据库的代码
注意开头前面的几个命名空间的引用,缺一不可,执行完上面代码之后,(我自己创建的数据库名字为:apengchao,表名字为:apengchao),打开数据库,需要刷新一下,就可以看到表里面已经有了数据了,如下图
嗯,如果能够运行成功,说明我们的步骤都是正确的,这就是一个简单的测试,测试成功,说明我们的VS与MySql数据连接是没有任何问题的,只要把该引入的都引入了就不会报什么异常错误之类的,接下来将用C#代码和Nhibernate包来实现一个很简单的对数据增删改查的操作,这一次需要用到我们之前下载的Nhibernate包里面的文件,全部dll文件引入之后,“引用”下面应该是这样的:
不要少任何一个,好了然后我还是利用刚才创建的数据库,先完善一下表,完善和如下图
现在表中有两天信息了,现在我们使用代码对这两条信息进行操作,步骤如下:
1.打开VS2015新建一个项目,名字为APengChao,与数据库名字对应的话,看着也舒服一些,当然名字随意,想取什么就取什么,符合规范就行。然后我们在工程下面新建两个文件夹:Model文件夹用来存放数据库表类和映射类,还有一个Manger类用来存放对数据库执行增删改查操作的类。
我们在Model文件下新建一个名字为APengPhao的类,这个刚好也是和数据库表名相同的,请看这个类的代码:
2.再在Modle文件下建立一个映射类,名字为MapAPengChao,这个类的代码如下:
3.创建Nhibernate帮助类,使用Nhibernate连接数据库,用来得到sessionFactory,然后使用sessionFactory里面的session去操作数据库,代码如下:
4.在Manger文件里新建一个名为APengChaoManger的类,用来进行增删改查操作,代码如下:
实现查询表中所有姓名的操作:
最后输出:pengchao xiaodie
Nhibernate包可以在VS2015中下载 ,对MySql操作,我用的是MySQL-FRONT,注意要想实现和数据库的链接Connector/Net这个是必须要下的,下完之后会有几个dll文件,然后添加到引用里面去就好了。
先写一个简单的给你定义的数据库中添加一条元素的代码:(不使用Nhibernate的)
前提:先把该用的dll文件,添加到引用里面去不然,会连接不成功,之前下载的Connector/Net(选择.Net&Mono)里面主要有这么几个dll文件,如下:
mysql.data.dll
mysql.data.entity.dll
mysql.visualstudio.dll
mysql.web.dll
步骤:1.打开数据库,新建一个数据库,名字随意,添加一个表,名字随意,然后添加两个字段,一个字段名称为name,一个为age,好了表建好之后,我们开始使用很简单很简单一个C#连接MySql数据库的代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using MySql.Data; using MySql.Data.MySqlClient; using System.Data; namespace _001 { class Program { static void Main(string[] args) { string constr = "server=localhost;User Id=root;password=pc123;Database=apengchao"; MySqlConnection mycon = new MySqlConnection(constr); mycon.Open(); MySqlCommand mycmd = new MySqlCommand( "insert into apengchao(name,age) values('pengchao','19')", mycon); if (mycmd.ExecuteNonQuery() > 0) { Console.WriteLine("数据插入成功!"); } Console.ReadLine(); mycon.Close(); } } }
注意开头前面的几个命名空间的引用,缺一不可,执行完上面代码之后,(我自己创建的数据库名字为:apengchao,表名字为:apengchao),打开数据库,需要刷新一下,就可以看到表里面已经有了数据了,如下图
嗯,如果能够运行成功,说明我们的步骤都是正确的,这就是一个简单的测试,测试成功,说明我们的VS与MySql数据连接是没有任何问题的,只要把该引入的都引入了就不会报什么异常错误之类的,接下来将用C#代码和Nhibernate包来实现一个很简单的对数据增删改查的操作,这一次需要用到我们之前下载的Nhibernate包里面的文件,全部dll文件引入之后,“引用”下面应该是这样的:
不要少任何一个,好了然后我还是利用刚才创建的数据库,先完善一下表,完善和如下图
现在表中有两天信息了,现在我们使用代码对这两条信息进行操作,步骤如下:
1.打开VS2015新建一个项目,名字为APengChao,与数据库名字对应的话,看着也舒服一些,当然名字随意,想取什么就取什么,符合规范就行。然后我们在工程下面新建两个文件夹:Model文件夹用来存放数据库表类和映射类,还有一个Manger类用来存放对数据库执行增删改查操作的类。
我们在Model文件下新建一个名字为APengPhao的类,这个刚好也是和数据库表名相同的,请看这个类的代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Test.Modle { /// <summary> /// 这个类是用来存储数据库表中元素的 /// </summary> class APengChao { /*注意下面的写法是固定的*/ public virtual int Id { get; set; }//表主键 public virtual string Name { get; set; }//表中的名字 public virtual int Age { get; set; }//表中的年龄 } }
2.再在Modle文件下建立一个映射类,名字为MapAPengChao,这个类的代码如下:
using FluentNHibernate.Mapping; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Test.Modle { /// <summary> /// 用来给数据库表中元素做映射的类 /// </summary> class MapAPengChao:ClassMap<APengChao>//继承ClassMap 为APengChao做映射 { //使用一个构造方法来表明我们与APengChao做映射 public MapAPengChao() { Id(x => x.Id).Column("Id");//主键映射主键 //其他元素我们使用Map来映射 Map(x => x.Name).Column("name"); Map(x => x.Age).Column("age"); //表明是哪个表 Table("apengchao"); } } }
3.创建Nhibernate帮助类,使用Nhibernate连接数据库,用来得到sessionFactory,然后使用sessionFactory里面的session去操作数据库,代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using NHibernate; using FluentNHibernate.Cfg; using FluentNHibernate.Cfg.Db; namespace Test { public class NHibernateHelper { private static ISessionFactory _sessionFactory;//单例模式 //_sessionFactory初始化 private static void InitSeeionFactory() { /*Fluently使用它来识别Modle下与数据库中元素的映射关系*/ _sessionFactory= Fluently.Configure().Database( //连接数据库需要的配置和属性 (MySQLConfiguration.Standard.ConnectionString(db => db.Server("localhost") .Database("apengchao").Username("root").Password("pc123"))) //使用Mappings将Modle下的类于表进行一一对应 ).Mappings //AddFromAssemblyOf从当前类NHibernateHelper的dll文件里面进行自动映射 (x => x.FluentMappings.AddFromAssemblyOf<NHibernateHelper>()) //生成工厂 .BuildSessionFactory();//最后生成工厂赋值给_sessionFactory } //得到sessionFactory private static ISessionFactory SessionFactory { get { if (_sessionFactory == null) { InitSeeionFactory(); } return _sessionFactory; } } //从sessionFactory里面得到session public static ISession OpenSession() { return SessionFactory.OpenSession();//OpenSession() 这个就是用来得到session的 //我们之后就是使用session来进行操作数据库 } } }
4.在Manger文件里新建一个名为APengChaoManger的类,用来进行增删改查操作,代码如下:
实现查询表中所有姓名的操作:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Test.Modle; namespace Test.Manger { class APengChaoManger { public IList<APengChao> GetAllData() { using (var session = NHibernateHelper.OpenSession()) { using (var transcation = session.BeginTransaction()) { //使用session查询APengChao 还记得这个类的功能吧 var userList= session.QueryOver<APengChao>(); return userList.List();//返回查询后的结果 } } } static void Main(string[] args) { APengChaoManger pc = new APengChaoManger(); IList<APengChao> apc = pc.GetAllData(); Console.WriteLine("开始测试查询功能!"); foreach(APengChao cp in apc) { Console.WriteLine(cp.Name);//输出查询到的所有表中元素的名字 } Console.ReadKey(); } } }
最后输出:pengchao xiaodie
相关文章推荐
- Mysql 存储程序
- JDBC中连接MySQL数据库
- 在使用xutils时post请求传递中文到服务端Mysql数据库出现中文乱码。
- mysql-5.6-win32免安装版配置
- MySql5.7配置版安装
- MySQL学习7:操作数据表(一)
- MySQL二进制文件规范安装
- MySql笔记-主要存储引擎
- MYSQL中文乱码的问题
- mysql5.7 ERROR 1045 (28000): Access denied for user解决方法
- mysql优化设计方案
- Mysql 数据库 操作语句
- jdbc mysql driver 6.0.2
- MySQL 服务无法启动 ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
- MySQL 数据库性能优化之表结构优化
- mysql的基本操作
- MySQL 5.6.22绿色版安装
- MySQL 加锁处理分析
- MySQL开发规范和原则大全
- MySQL锁机制详解及死锁处理方式