当大家已经习惯了使用.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";

/// /// 添加数据

///

///

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();

}

}

/// /// 修改数据

///

///

///

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();

}

}

/// /// 删除数据

///

///

///

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();

}

}

/// /// 根据主键查询

///

///

///

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;

}

}

/// /// 查询集合

///

///

public IListGetList()

{

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();

IListlist = new List();

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. 再次导入数据成功

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

alinq mysql_ALinq让Mysql变得如此简单_MySQL相关推荐

  1. corelab mysql_ALinq 让Mysql变得如此简单_MySQL

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

  2. ALinq 让Mysql变得如此简单

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

  3. mysql双机备份最简单_MySQL的本地备份和双机相互备份脚本

    先修改脚本进行必要的配置,然后以root用户执行. 1. 第一执行远程备份时先用 first参数. 2. 本地备份用local参数 3. 远程备份不用参数注意1 注意:需要在另一主机上的Mysql用户 ...

  4. mysql 表转置,数据转置,让行列转换变的如此简单

    数据转置,让行列转换变的如此简单 各位小伙伴,很高兴再次相遇.今天,我们将继续分享和交流关于办公中经常遇到问题.实例的分析和解决问题的方法,目的就是通过不断的学习,提升自身的技能,让办公变的如此简单. ...

  5. Soul网关发布2.2.0:让高性能网关变得如此简单!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者:猫大人 来源:转载自公众号「Dromara分布式事 ...

  6. MySQL查看状态及简单优化

    MySQL查看状态及简单优化 使用show status命令 含义如下: aborted_clients 客户端非法中断连接次数 aborted_connects 连接mysql失败次数 com_xx ...

  7. Soul网关发布2.2.0 | 让高性能网关变得如此简单!

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群",加入新技术 本文来自:猫大人的Dromara分布式事务 Soul发布全新的架构 ...

  8. mysql创建数据表列子,MySQL 创建数据库及简单增删改查

    MySQL 创建数据库及简单增删改查 我们可以在登陆 MySQL 服务后,使用 create 命令创建数据库,语法如下: CREATE DATABASE 数据库名; 登入: Enter passwor ...

  9. android系统用在什么电脑,手机变电脑的简单操作 适用于所有Android系统的向日葵...

    现如今,什么电子设备对于我们来说最重要呢?毫无疑问,必定是人手一部不离不弃的手机!不过,可能有"杠精"会说了,电脑不是更重要?毕竟办公离不开,还有很多大型网络游戏也只能在电脑上才享 ...

最新文章

  1. 【微信小程序】登录功能实现及讲解(获取用户唯一标识)
  2. 【深度学习前沿】一文回顾深度学习十年发展
  3. 托马斯·弗里德曼:美政府应研究任正非的提议
  4. 11月数据库排行:PostgreSQL起飞、三巨头分数持续低迷
  5. Sitemesh排除Exclude不装饰特定页面的解决办法
  6. iphone5登陆不了微信,提示“登录失败,连接失败,请检查网络设置”
  7. 用PHP实现单向链表
  8. lua面向对象编程之点号与冒号的差异详细比较
  9. 10个Bug环环相扣,你能解开几个?
  10. c语言定义的几种易错的说明
  11. ELMAH--Using HTTP Modules and Handlers to Create Pluggable ASP.NET Components 77 out of 90 rated th
  12. php 调用vs2013 dll文件,vs2015 肿么添加dll文件
  13. paip.自适应网页设计 跟 响应式 设计方法与工具补充(2)o54
  14. SQL数据库的导入和导出
  15. linux下activityMQ安装
  16. python结巴分词下载_jieba: 结巴中文分词做最好的Python分词组件
  17. 4G基站软件产品测试,4G TD-LTE测试解决方案全方位解读 - 全文
  18. vscode远端编程 终极方案
  19. 方向传感器新的替代方法详解
  20. 服务器运维是什么意思?日常工作包含哪些?

热门文章

  1. c++ vs 输出log到窗口_欧冠豪门碰撞,尤文vs巴萨,曼联vs红牛
  2. MySQL数据库存入日期(java.sql.Date)数据,天数会少一天的问题
  3. Linux 系统下命令 unrar 的中文版使用说明
  4. IntelliJ IDEA for Mac 如何创建普通的Java项目_创建项目_新建项目
  5. SublimeText如何让代码的关键字高亮显示
  6. 机器学习西瓜书各章详细目录定位
  7. python程序怎么给别人运行_如何使Python脚本作为服务运行?
  8. 【WebRTC---源码篇】(一)全局初始化
  9. 关于select中fd_set变量的一些通俗宏解释
  10. android4.0支持m3u8格式,【报Bug】安卓下无法播放M3U8格式音频,报错