ALinq 让Mysql变得如此简单

当大家已经习惯了使用.net 去操作SQL Server,有多少人曾经尝试过使用.net 去操作Mysql数据库!在.net 的光环下,Mysql是显得如此微不足道!但是Mysql的开源又是如此具有诱惑。

1.       ADO.NET 方式连接Mysql数据库 

经过在网上查找资料,在.net 上连接mysql 数据库有三种方式: 

        方法一:

     使用CoreLab推出的MYSQL访问组件,引用命名空间CoreLab.MySql

方法二:
      通过ODBC访问MYSQL数据库, 前要先下载两个组件:odbc.net和MYSQL的ODBC驱动,可以使用ODBC访问Mysql数据库 

方法三:
    使用MYSQL推出的MySQL Connector/Net is an ADO.NET driver for MySQL,该组件为MYSQL为ADO.NET访问MYSQL数据库设计的.NET访问组件,使 用MySql.Data.MySqlClient 

以上三种方式的说明可以具体参照文章:

 http://blog.csdn.net/lxh0959/archive/2008/08/05/2773424.aspx

       此篇文章对此做了详细说明 
 

  

这里要说明的是第三种方式,这种访问方式完全遵循我们Ado.net 访问SQL Server的模式,所以使用起来也更加得心应手。

           ADO.NET driver for MySQL 下载地址:

                  官方网站: http://www.mysql.com/downloads/ 

 

2.       基础数据库操作 

使用ADO.net 操作数据库,固定不变的模式,五个核心对象

   Connection: Connection 对象主要是开启程序和数据库之间的连结。没有利用连结对象将数据库打开,是无法从数据库中取得数据的。

   Command:Command 对象主要可以用来对数据库发出一些指令,例如可以对数据库下达查询、新增、修改、删除数据等指令,以及呼叫存在数据库中的预存程序等。

   DataAdapter: DataSetCommand 对象主要是在数据源以及DataSet 之间执行数据传输的工作,它可以透过Command 对象下达命令后,并将取得的数据放入DataSet 对象中。

   DataSet:DataSet 这个对象可以视为一个暂存区(Cache),可以把从数据库中所查询到的数据保留起来,甚至可以将整个数据库显示出来。DataSet 的能力不只是可以储存多个Table 而已,还可以透过DataSetCommand 对象取得一些例如主键等的数据表结构,并可以记录数据表间的关联。DataSet 对象可以说是ADO.NET 中重量级的对象,这个对象架构在DataSetCommand 对象上,本身不具备和数据源沟通的能力。

  DataReader: 当我们只需要循序的读取数据而不需要其它操作时,可以使用DataReader 对象。DataReader对象只是一次一笔向下循序的读取数据源中的数据,而且这些数据是只读的,并不允许作其它的操作。因为DataReader 在读取数据的时候限制了每次只读取一笔,而且只能只读,所以使用起来不但节省资源而且效率很好. 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;

namespace CimDataImport
{
    public class TestCharacter
    {
        public const string mysqlConnection = "User Id=root;Host=localhost;Database=cim;password=root";

        /// <summary>
        /// 添加数据
        /// </summary>
        /// <returns></returns>
        public int Add(UserBase entity)
        {
            string sql = "INSERT INTO cimuser (userid,userNickName) VALUE (@userid,@userNickName)";
            using (MySqlConnection mycn = new MySqlConnection(mysqlConnection))
            {
                mycn.Open();
                MySqlCommand command = new MySqlCommand(sql, mycn);
                command.Parameters.AddWithValue("@userid", entity.UserId);
                command.Parameters.AddWithValue("@userNickName",entity.UserNickName);
                return command.ExecuteNonQuery();
            }
        }

        /// <summary>
        /// 修改数据
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public int Update(UserBase entity)
        {
            string sql = "UPDATE cimuser SET userNickName=@userNickName WHERE userid=@userid";
            using (MySqlConnection mycn = new MySqlConnection(mysqlConnection))
            {
                mycn.Open();
                MySqlCommand command = new MySqlCommand(sql, mycn);
                command.Parameters.AddWithValue("@userid", entity.UserId);
                command.Parameters.AddWithValue("@userNickName", entity.UserNickName);
                return command.ExecuteNonQuery();
            }
        }

        /// <summary>
        /// 删除数据
        /// </summary>
        /// <param name="primaryKey"></param>
        /// <returns></returns>
        public int Delete(int primaryKey)
        {
            string sql = "DELETE FROM cimuser WHERE userid=@userid";
            using (MySqlConnection mycn = new MySqlConnection(mysqlConnection))
            {
                mycn.Open();
                MySqlCommand command = new MySqlCommand(sql, mycn);
                command.Parameters.AddWithValue("@userid", primaryKey);
                return command.ExecuteNonQuery();
            }
        }

        /// <summary>
        /// 根据主键查询
        /// </summary>
        /// <param name="primaryKey"></param>
        /// <returns></returns>
        public UserBase Get(int primaryKey)
        {
            string sql = "SELECT userid,userNickName FROM cimuser where userid=@userid";
            using (MySqlConnection mycn = new MySqlConnection(mysqlConnection))
            {
                mycn.Open();
                MySqlCommand command = new MySqlCommand(sql, mycn);
                command.Parameters.AddWithValue("@userid", primaryKey);
                MySqlDataReader reader = command.ExecuteReader();
                UserBase userBase = null;
                if (reader.Read())
                {
                    userBase = new UserBase();
                    userBase.UserId = Convert.ToInt32(reader["userid"]);
                    userBase.UserNickName = reader["userNickName"] == DBNull.Value ? null : reader["userNickName"].ToString();
                }
                return userBase;
            }
            
        }

        /// <summary>
        /// 查询集合
        /// </summary>
        /// <returns></returns>
        public IList<UserBase> GetList()
        {
            string sql = "SELECT userid,userNickName FROM cimuser limit 1,10";
            using (MySqlConnection mycn = new MySqlConnection(mysqlConnection))
            {
                mycn.Open();
                MySqlCommand command = new MySqlCommand(sql, mycn);
                MySqlDataReader reader = command.ExecuteReader();
                IList<UserBase> list = new List<UserBase>();
                UserBase userBase = null;
                while (reader.Read())
                {
                    userBase = new UserBase();
                    userBase.UserId = Convert.ToInt32(reader["userid"]);
                    userBase.UserNickName = reader["userNickName"] == DBNull.Value ? null : reader["userNickName"].ToString();
                    list.Add(userBase);
                }
                return list;
            }
        }
        
    }

3.  ALinq 让我变得如此简单 

在Linq 没有现世之前,Ado.net 的数据库操作让我们感觉到编程的痛苦,每天重复着相同的数据库操作代码,后来千奇百怪的代码生成器让我们从中解脱出来,虽然有些代码生成器的确非常不错,但是心中始终觉得那些代码少了一些什么!

Linq TO SQL 推出之后,我们感觉到了.net 语法的甜,是甜到心里的那种甜,感觉自己从代码中彻底释放出来!可是Linq To SQL 只支持微软的 SQL Server 数据库。

Alinq 是如此完美的解决了多类型数据库操作的问题,在操作SQL Server 数据上毫不逊色Linq to SQL,在Mysql,Oracle,Db2 等数据库操作上更甚一筹! 
 

第一: 新建工程

                    这里使用控制台程序

      第二:添加新建项 
 

 

第三: 新建数据库连接 

 

 第四:添加Mysql数据库连接

 

 第五:选择Mysql 数据源

 

第六:更改数据源 

 

第七:输入Mysql服务名以及账号和密码 

 

 第八:测试连接

 

第九:连接成功 

 

上述操作是必须在安装ADO.NET driver for MySQL 组件的情况下才能正常操作,否则第六步选择更改数据源的时候看不到MySql database 选项。

    Linq to sql 对于大家来说已经很熟悉了,ALinq 的操作前面的文章也已经详细讲解过了。这里操作不做详细说明了! 

 

4.   中文你让我如何说你 

 Mysql 数据库开源,更重要的是它能够运行在Linux系统中!在工作中将Sql server 数据库中的数据导入到Mysql 的时候,意想不到的事情发生了,中文在Mysql 中都变成了乱码。而且Mysql 是安装在Linux 系统上的。

 

Linux 中Mysql解决乱码问题方案以及操作步骤:

1.       查找Mysql 下的.cnf 配置文件 

              在windows系统中安装mysql程序,其中保存保存数据的配置文件名为 my.ini

   此文件存在于mysql安装目录下,使用记事本打开此文件修改内容如下:

   将 default-character-set=utf8 (有两处)更改为 default-character-set=GBK 并且添加节点:character_set=gbk 

 

在Linux中首先查找mysql 的配置文件命令如下:

find -name *.cnf –print

    得到如下结果: 
 

 

2. 将Mysql 中的一个cnf文件复制到etc文件目录下,并且保存为my.cnf 

在etc 目录下查找my.cnf 文件,如果此文件不存在则需要从1中查找的文件中my-large.cnf,

          My-small.cnf,my-medium.cnf 三个文件中复制一个到etc目录下面,并且保存my.cnf 文件。

     使用命令:

         cp /usr/share/mysql/my-large.cnf /etc/

         mv etc/my-large.cnf etc/my.cnf

            文件复制到特定目录,并且重新命名。 
 

3.  修改my.cnf 配置文件 

cd etc/    进入etc目录下 

vi my.cnf    使用vi命令打开my.cnf 文件 

 

如果文件中存在此节点,则将编码方式修改为gbk 

4. 重新启动服务

/etc/init.d/mysql restart 重新启动mysql 服务 

5.  再次导入数据成功

 

 

时间: 2024-10-01 03:48:59

ALinq 让Mysql变得如此简单的相关文章

asp.net中通过ALinq让Mysql操作变得如此简单_实用技巧

1. ADO.NET 方式连接Mysql数据库 经过在网上查找资料,在.net 上连接mysql 数据库有三种方式: 方法一: 使用CoreLab推出的MYSQL访问组件,引用命名空间CoreLab.MySql 方法二: 通过ODBC访问MYSQL数据库, 前要先下载两个组件:odbc.net和MYSQL的ODBC驱动,可以使用ODBC访问Mysql数据库 方法三: 使用MYSQL推出的MySQL Connector/Net is an ADO.NET driver for MySQL,该组件为

旅游CMS让旅游建站变得更简单

中介交易 SEO诊断 淘宝客 云主机 技术大厅 现如今,随着电子信息科学技术的不断发展,互联网正在以势不可挡的态势影响着我们生活.工作.学习的方方面面.我们不得不为互联网的力量而叹服,它确实让我们见证了不一样的学习工作方式,也确确实实的改变了我们的生活.互联网为我们的生活带来了无限的便利,正因为如此,各行各业都不断地向互联网靠拢,借助互联网建设行业网站,并将本行业与互联网有机结合起来,提高行业的竞争力,就在竞争日益激烈的当下,旅游业也不甘示弱,正在凭借奋力进军新视角,Tripscms就是在这个过

日志分析方法概述 怎样变得更简单更有价值

中介交易 SEO诊断 淘宝客 云主机 技术大厅 日志在计算机系统中是一个非常广泛的概念,任何程序都有可能输出日志:操作系统内核.各种应用服务器等等.日志的内容.规模和用途也各不相同,很难一概而论. 本文讨论的日志处理方法中的日志,仅指Web日志.其实并没有精确的定义,可能包括但不限于各种前端Web服务器--apache.lighttpd.tomcat等产生的用户访问日志,以及各种Web应用程序自己输出的日志. 在Web日志中,每条日志通常代表着用户的一次访问行为,例如下面就是一条典型的apach

CSS复合选择器:css3让我们选择元素变得越来越简单

文章简介:使用css的类名交集复合选择器. 首先先看一下基本定义: 复合选择器就是两个或多个基本选择器,通过不同方式连接而成的选择器,主要包括"交集"选择器."并集"选择器."后代"选择器. 交集选择器 "交集"复合选择器是由两个选择器直接连接构成,其结果是选中二者各自元素范围的交集.其中第一个必须是标记选择器,第二个必须是类别选择器或者ID选择器.这两个选择器之间不能有空格,必须连续书写. 注意其中第一个必须是标记选择器,如

Win7使无线上网变得更简单

无线网络轻松连接 笔记本无线上网越发流行.在Windows7中,无线上网的设置变得非常简单直接,很人性. 首先,在Win7中系统界面右下角的网络连接的图标变成了.鼠标点一下就会系统自动搜索到的各种无线网络信号. 点选你需要连接的网络信号,点"连接"按钮,系统就会为你建立连接,如果是需要经常使用的无线网络信号,那么你可以在点"连接"前勾选"自动连接",下次再开机,系统会自动识别网络信号并连接. 如果你选择的网络连接含密码保护,系统会显示,正确输入密

Console命令详解,让调试js代码变得更简单

Console命令详解,让调试js代码变得更简单 Firebug是网页开发的利器,能够极大地提升工作效率. 但是,它不太容易上手.我曾经翻译过一篇<Firebug入门指南>,介绍了一些基本用法.今天,继续介绍它的高级用法. =================================== Firebug控制台详解 作者:阮一峰 出处:http://www.ruanyifeng.com/blog/2011/03/firebug_console_tutorial.html 控制台(Conso

还记得那个能让弹琴变得更简单的壹枱智能钢琴吗?

摘要: 还记得那个能让弹琴变得更简单的壹枱智能钢琴吗?他们近日向外界宣布 获得了创新工场A轮千万级的投资 . 壹枱是一款降低了购买和学习双重门槛的智能钢琴.在硬件方面,它和钢琴 还记得那个能让弹琴变得更简单的壹枱智能钢琴吗?他们近日向外界宣布获得了创新工场A轮千万级的投资. 壹枱是一款降低了购买和学习双重门槛的智能钢琴.在硬件方面,它和钢琴一样选择了配重的琴键,弹奏时每个琴键上方发光的指示灯区别了其与传统钢琴的本质不同.壹枱不仅支持直接弹奏,还可以通过连接iPad.iPhone使用App来进行培

mysql主从复制(超简单)

mysql主从复制(超简单) 怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作:1.1.版本一致1.2.初始化表,并在后台启动mysql1.3.修改root的密码 2.修改主服务器master: vi /etc/my.cnf [mysqld]log-bin=mysql-bin //[必须]启用二进制日志server-id=222 //[必须]服务器唯一ID,默认是1,一般取IP最后一段 3.修改从服务器slave: vi /etc/my.cnf [

TheONE钢琴叶滨:让音乐学习变得更简单

摘要: TheOne智能钢琴的创始人叶滨是一位连续创业者,也在做投资,清华电子系毕业.他开玩笑说,他的同系校友,涉足音乐领域的不在少数,比如高晓松.所以他做智能钢琴这个项目也很正 TheOne智能钢琴的创始人叶滨是一位连续创业者,也在做投资,清华电子系毕业.他开玩笑说,他的同系校友,涉足音乐领域的不在少数,比如高晓松.所以他做智能钢琴这个项目也很正常. 12月21日,在虎嗅FM节上的智能生活馆,我和叶滨进行了一场访谈对话,聊起智能钢琴这个项目.最近我在多个互联网圈的活动看到这台产品出没,说明是一