经过在网上查找资料,在.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://HdhCmsTestmysql测试数据/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. 再次导入数据成功
查看更多关于asp.net中通过ALinq让Mysql操作变得如此简单的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did35306