前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用VS2015和Nhibernate实现与MySql数据库连接,实现增删改查操作

使用VS2015和Nhibernate实现与MySql数据库连接,实现增删改查操作

作者头像
bering
发布2019-12-03 15:35:25
1.4K0
发布2019-12-03 15:35:25
举报
文章被收录于专栏:游戏开发之旅游戏开发之旅

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/CJB_King/article/details/53456282

准备工具: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数据库的代码

代码语言:javascript
复制
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的类,这个刚好也是和数据库表名相同的,请看这个类的代码:

代码语言:javascript
复制
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,这个类的代码如下:

代码语言:javascript
复制
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去操作数据库,代码如下:

代码语言:javascript
复制
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的类,用来进行增删改查操作,代码如下:

实现查询表中所有姓名的操作:

代码语言:javascript
复制
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();  
        }  
    }  
}  
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-12-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档