1. 程式人生 > >C# & nHibernate連線MySQL

C# & nHibernate連線MySQL

目錄

C#連線

配置

對映

建立事務

C#連線MySQL

C#連線

首先在VS專案中新增MySql.Data引用,瀏覽

具體位置一般在C:\Program Files (x86)\MySQL\Connector NET\Assemblies\v4.0(根據專案框架進行選擇)

namespace CSharp連線
{
    class Program
    {
        static void Main(string[] args)
        {
            string connectStr =     
        "server=127.0.0.1;port=3306;database=mygamedb;user=**;password=**;sslmode=none;";
            MySqlConnection conn = new MySqlConnection(connectStr);
            try
            {
                conn.Open();
                Console.WriteLine("建立連線");
            }
            catch(Exception e)
            {
                Console.WriteLine(e);
            }
            finally
            {
                conn.Close();
            }
            Console.ReadKey();
        }
    }
}

增刪改查方法

MySqlConnection

MySqlCommand

MySqlDataReader(獲取查詢資料)

MySqlCommand.ExecuteReader() 查詢

MySqlCommand.ExecuteNonQuery()插入刪除修改

MySqlCommand.ExecuteScalar()查詢,返回單個值

//查詢

string sql = "select * from users";
MySqlCommand cmd = new MySqlCommand(sql,conn);
MySqlDataReader reader = cmd.ExecuteReader();
while(reader.Read())
{
    Console.WriteLine(reader[0].ToString());//讀取該行的第一個欄位 object型別
    //也可以 reader.GetInt32(0) 欄位索引 返回int
    // reader.GetString(1)則返回 string
    // reader.GetInt32("欄位名")  GetString("欄位名")
}

//插入

string sqlinsert = "insert into users(username,password) values('sfsdf','fssdf') ";
cmd = new MySqlCommand(sqlinsert, conn);
int result=cmd.ExecuteNonQuery();//返回影響的記錄數

//單個查詢

string sqlScalar="select count(*) from users"
cmd = new MySqlCommand(sqlScalar, conn);
object o = cmd.ExecuteScalar();
int count = Convert.ToInt32(o.ToString());
Console.WriteLien(count);

NHibernate與MySql互動

(主要是可以像操作物件一樣去操作資料庫的資料)

配置

專案配置,開啟專案屬性,修改好程式集和名稱空間的名稱

一樣的新增MySql.Data引用.dll引用

引入NHibernate.dll 可以在解決方案資源管理器中對專案右鍵管理NuGet中搜索NHibernate直接下載

如果無法下載就到官網直接下載,解壓找到這個檔案新增到專案的引用即可。

xml檔案配置,參考官網教程

新增一個新檔案命名為 hibernate.cfg.xml 一定得這麼命名,屬性設定為始終複製

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="dialect">NHibernate.Dialect.MySQL5Dialect</property>
    <!--資料庫版本 MySQL5-->
    <property name="connection.driver_class">NHibernate.Driver.MySQLDataDriver</property>
    <!--使用的資料庫 MySQLData-->
    <property name="connection.connection_string">Server=localhost;Database=mygamedb;User ID=**;Password=**;SslMode=none;</property>
    <!--配置連線資料庫的資訊-->
    <property name="show_sql">true</property>
  </session-factory>
</hibernate-configuration>

對映

資料庫裡一個表對應一個類,如users表建一個類User(命名自取),我把這些類放在一個資料夾下便於管理

namespace Photon.Model
{
    public class User
    {
        public virtual int Id { get; set; }
        public virtual string Username { get; set; }
        public virtual string Password { get; set; }
        public virtual DateTime Registerdate { get; set; }
    }
}

建一個對映的xml檔案,命名最好和類名一致比較好找,字尾必須是 類名.hbm.xml ,可以把對映的xml都放在一個資料夾下

屬性的生成操作設定為嵌入的資源 和類打包到程式集的

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="Photon"
                   namespace="Photon.Model">
  <!--修改成對應的程式集和名稱空間名稱-->
  <class name="User" table="users"><!--name是類名,table就是資料庫的表名-->
    <id name="Id" column="id" type="Int32"><!--主鍵,欄位名,資料型別-->
      <generator class="native" /><!--自動增長-->
    </id>
    <property name="Username" column="username" type="String"/>
    <property name="Password" column="password" type="String"/>
    <property name="Registerdate" column="registerdate" type="Date"/>
  </class>

</hibernate-mapping>

建立session 增刪改查

Session.Save();  

Session.Delete()

Session.Update()

using NHibernate;
using NHibernate.Cfg;
using Photon.Model;

namespace Photon
{
    class Program
    {
        static void Main(string[] args)
        {
            var configuration = new Configuration();
            configuration.Configure();//解析hibernate.cfg.xml
            configuration.AddAssembly("Photon");
            Console.WriteLine("成功");

            ISessionFactory sessionFactory = null;//會話工廠
            ISession session = null;
            try
            {
                sessionFactory= configuration.BuildSessionFactory();
                session =sessionFactory.OpenSession();//開啟一個跟資料庫的會話

                User user = new User() { Username = "user1", Password = "user1" };
                session.Save(user);
            }
            catch(Exception e)
            {
                Console.WriteLine(e);
            }
            finally
            {
                if(session!=null)
                {
                    session.Close();
                }
                if(sessionFactory!=null)
                {
                    sessionFactory.Close();
                }
            }
            Console.ReadKey();

        }
    }
}

建立事務

sessionFactory= configuration.BuildSessionFactory();
session =sessionFactory.OpenSession();//開啟一個跟資料庫的會話

ITransaction transaction=session.BeginTransaction();//開啟事務
                
User user2 = new User() { Username = "user2", Password = "user2" };
User user1 = new User() { Username = "user1", Password = "user1" };
session.Save(user2);
session.Save(user1);

transaction.Commit();//事務提交,只有上面兩個save操作都成功了才會寫入資料庫

transaction.Dispose();//也要關閉

相關推薦

C# & nHibernate連線MySQL

目錄 C#連線 配置 對映 建立事務 C#連線MySQL C#連線 首先在VS專案中新增MySql.Data引用,瀏覽 具體位置一般在C:\Program Files (x86)\MySQL\Connector NET\Assemblies

簡單講一下C語言連線MySQL資料庫

1.首先你得將MySQL安裝上   apt-get install mysql-server  (mysql -uroot -p 登陸測試) 2.安裝連結庫   apt-get install libmysqlclient-dev 3.進行資料庫的建立,例如:   cre

Linux程式設計——C語言連線MySQL資料庫

MySQL是Linux系統下廣泛使用的開源免費資料庫,是Linux應用程式資料儲存的首選。許多釋出的Linux版本是自帶MySQL的,但是也有些釋出版本是不帶的(比如我現在用的Ubuntu),那就需要手動安裝。在Synaptic Packet Management中搜索“m

C語言連線mysql簡單查詢例項入門-mysql_init,mysql_real_connect,mysql_query,mysql_close等

一: 分配或初始化與mysql_real_connect()相適應的MYSQL物件。用mysql_init()函式。 MYSQL *mysql_init(MYSQL *mysql) 描述 分配或初始化與mysql_real_connect()相適應的MYSQL物件。如

Linux C語言連線MySQL 增刪改查操作

Linux下想要測試mysql和memcached的效能,因為是伺服器只能通過終端連線,所以考慮用C語言寫測試程式碼。於是研究了把C怎麼連線MySQL以及增刪改查的程式碼。安裝mysql-client或者編譯原始碼安裝mysql後,會有支援C語言寫客戶端的標頭檔案和庫檔案

C語言連線MySQL資料庫

1 配置 win7 32bit,mysql5.5,vs2008 vc路徑設定,工具 -> 選項 -> 專案和解決方案 -> VC++ 路徑,Platform選擇Win32,然後 Include files中新增 D:\Program F

c#遠端連線mysql資料庫

,安裝好後,將MySQLDriverCS.dll通過新增引用的方式,新增到專案中。 2、設定mysql資料庫為允許遠端訪問,採用如下程式碼: 格式:grant 許可權 on 資料庫名.表名 使用者@登入主機 identified by "使用者密碼";grant selec

C# FluentNHibernate 連線mysql資料庫

首先需要安裝FluentNHibernate包,右鍵工程檔案 右鍵專案工程,如下圖,在開啟的視窗中下載NHibernate包,並安裝。 程式程式碼: 連線資料庫: using FluentNHibernate.Cfg; using Fluen

C# NPoco 連線 Mysql 測試,包含隨機生成姓名。

using System; using System.Collections.Generic; using System.Configuration; using System.Data.Common; using System.Diagnostics; using Syst

通過Nhibernate連線Mysql資料庫

通過nhibernate連線MySql  1,新建一個工程  引入MySql.Data  和 Nhibernate   並在工程下新建一個Xml  名字為hibernate.cfg.xml  複製到目錄設定為始終複製 ! 程式碼如下 <?xml version="1

C api 連線mysql資料庫的 開發例項

1. 下載mysql c connector 安裝包; 有兩種方法:                  1 下載tar檔案, 將其中的的 lib, include , bin 都放在 /usr/local 相應的目錄下;                  2. 也可配置連

C#連線Mysql資料庫NHibernate

一、什麼是NHibernate?    NHibernate是一個面向.NET環境的物件/關係資料庫對映工具。物件/關係資料庫對映(object/relational mapping,ORM)這個術語表示一種技術,用來把物件模型表示的物件對映到基於SQL的關係模型資料結構中去

Linux 下c語言連線與操作MYSQL

1.安裝mysql 2.安裝mysql.h函式庫 sudo apt-get install libmysqlclient-dev 3. mysql_real_connect() 連線一個mysql伺服器  語法如下 MYSQL *mysql_real_connect

vs2013下c++連線mysql資料庫

 本文使用的是mysql提供的api來進行連線,這樣使用比較方便。 開發環境:mysql 5.6+vs2013+win8.1作業系統 步驟1: 要使用mysql的api,需要mysql安裝目錄下include 和 lib 兩個資料夾的東西,如果你用的是wamp或者php

C++ ODBC方式連線MySQL(終極詳細)

因為我自己弄了好久,我不想讓別人也弄這麼久 1.電腦安裝mysql(shell版的和Install的都行,我的shell,64位) 2.配置設定(首先找到MySQL的路徑,我是手動存放在 C:\Program Files\MySQL)然後你會發現目錄下有兩個資料夾 include和lib

Linux下的C#連線Mysql資料庫

今天在嘗試在 Linux 系統下使用C#連線資料庫,發現網上這方面的資訊很少,所以就寫一篇部落格記錄一下。 Linux下這裡使用的是mono。 首先是缺少Mysql.Data.dll這個庫的,所以需要安裝 https://dev.mysql.com/downloads/connector/net/ 安

Linux C 連線mysql

安裝完mysql是還不可以的,需要額外安裝linux下操作mysql依賴的庫,安裝命令如下: sudo apt-get install libmysqlclient-dev 安裝完後即可對mysql進行操作。 因為最後編譯的時候需要用到mysql的路徑,如果不知道mysql的路徑在哪

C++ API方式連線mysql資料庫實現增刪改查

轉自 http://www.bitscn.com/pdb/mysql/201407/226252.html 一、環境配置 1,裝好mysql,新建一個C++控制檯工程(從最簡單的弄起,這個會了,可以往任何c++工程移植),在vs2010中設定,工程--屬性--VC++目

C# 連線mysql,連線後顯示多個執行緒池

資料庫連線字串 return string.Concat(new string[]             {      &n

C# 連線mysql,即使關閉連線,Mysql狀態依然是sleep

Aborted connection 245 to db: '資料庫' user: '使用者' host: '--IP地址--' (Got timeout reading communication packets)For more information, see Help and Support