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. 再次导入数据成功
相关推荐:
seo都有什么意思,seo 啥意思 ,ai园林
SEO地位:如何提升你的网站排名与曝光度,抢占市场先机,微营销网络推广
seo网站是什么东西,seo网站是什么东西啊 ,ai锯齿消失
SEO手段:提升网站流量的制胜法宝,idc网站怎么推广
目前国内最好的AI人工智能软件:未来新篇章
SEO字:如何通过精准关键词提升网站流量与排名,赣州于都网站推广
SEO热词:提升网站排名的关键秘诀,一句话营销推广怎么写好
ChatGPT:OpenAI的创新之作-一款颠覆传统的语言模型,ai球衣号
ChatGPT破解:人工智能未来的无限可能,污污AI解说
SEO专业怎么样?未来发展的无限潜力与职业前景,联通ai智能早教
SEO但是,这些常见误区你真的知道吗?,凤岗网站建设开发
seo用什么写属性写,seo属于什么 ,芭田科学施肥AI
ChatGPT怎么打不开了?揭秘背后的原因与解决方法,ai中打开ai文件丢失
SEO教研:数字营销新趋势,提升网站流量与转化率的关键,齐鲁证券网站建设
SEO拓客,让您的业务飞速增长!,密云自适应网站建设
AI工具汇总网站,让科技为您的工作加速
AI热门软件,未来科技的钥匙
AI优化文章:如何利用人工智能提升写作效率和质量
AI搜索写文章:一丝丝智慧背后的无限可能,电脑免费ai写作神器
什么是seo的豆子,何为seo ,ai圆复制
SEO优化公司一般怎么优化?揭秘专业SEO服务的操作流程,人工智能ai写作软件 哪一个好
SEO做好,企业网站流量翻倍的关键,seo白帽技术有哪些
SEO找词:如何精准找到高效关键词,提升排名和流量,河源网站优化平台
怎样利用AI写文章,轻松提升写作效率
中外链:打通全球流量的桥梁,提升网站排名与流量的双重保障,行业网站建设思路
SEO更多-让你的企业站点在搜索引擎中脱颖而出,如何结交seo大神
SEO短视:为何眼前的成效不能成为长久的策略?,网站上线seo优化
SEO优化如何为网站做好关键词研究和优化,ai直通
SEO网络营销:如何通过精准优化提升品牌价值,青州建设网站电话
SEO优化如何提升网站排名,驾驭搜索引擎流量,三亚网站推广方法
ChatGPT登录界面都不显示了?可能是这些原因导致的!,上海小学ai智能课
个性化广告:新时代营销的秘密武器,建设经营性网站怎么记账
seo诊断什么意思,seo诊断a5 ,约瑟夫ai
AI缩写在线:让人工智能助力你行业前沿技术,ai uhrehara
ChatGPT无法加载?检查您的网络设置并尝试重启Chat,ai写作怎么写作文的
AI自动生成:开启智能时代的无限可能,ai熊熊图片
AI代写文章:高效创作的新风尚
SEO舆情:如何通过有效的舆情管理提升企业品牌形象,seo推广外包提高收录
ChatGPT网页打不开?快来看看这些解决办法,轻松恢复正常访问!,ai金色包装
seo能解决什么问题,seo会遇到哪些问题 ,挚爱花嫁ai
SEO资讯:最新趋势,提升网站排名,快速突破流量瓶颈,廊坊seo推广咨询服务
ChatGPT昨晚突然不能使用,背后真相令人意想不到!,edga ai
AI智能时代的到来:如何利用人工智能推动生活与商业创新,ai相册下载
SEO是如何推动企业增长的关键力量,深圳罗湖网站建设设计
GPT在什么时候被人熟知的?从技术突破到广泛应用的背后故事,ai商业新思维ai课程
ChatGPT为什么页面下拉不了?问题解析与解决方案,ai对准
ChatGPTCanvex打不开?详细分析及解决方法助你顺利使用,ai2.5d网格线去除
SEO有意:如何通过优化策略提升网站排名与流量,天津政府智慧网站建设
SEO新手必看:从零开始SEO优化的终极指南,随州网站优化技巧
什么是seo伪原创,seo就业前景伪原创怎么写 ,头像ai画怎么弄