在asp.net中连接MySql、使用MySql.Data.DLL、完全ADO.NET访问模式、操作方便如同SQL Server
MySql.Data.dll下载地址:http://dev.mysql.com/downloads/
http://free5.ys168.com/?dotnetly
using MySql.Data.MySqlClient;
public partial class Msg : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string conn = "Data Source=127.0.0.1;User ID=root;Password=123;DataBase=NewDB;Charset=gb2312;";
MySqlConnection con = new MySqlConnection(conn);
con.Open();
MySqlCommand cmd = new MySqlCommand("select * from book",con);
MySqlDataReader dr = cmd.ExecuteReader();
GridView1.DataSource = dr;
GridView1.DataBind();
dr.Close();
con.Close();
}
}
需要说明的是:MySql中的参数化不同于SqlServer
Sqlserver的参数化写法:
myCommand.Parameters.Add(new SqlParameter("@Address", SqlDbType.NVarChar, 40));
myCommand.Parameters["@Address"].Value = address.Value;
MySql的参数化写法:
cmd.Parameters.Add(new MySqlParameter("?p_bname", MySqlDbType.VarChar, 50));
cmd.Parameters["?p_bname"].Value = book.Text;
.net是现在众多开发者的选择、而mysql数据一直以轻型、快速、免费深得许多开发者的暧昧、而php+mysql一直是许多大型网站所采用的方式。那能不能用.net+mysql这种组合方式了,当然可以,从这一篇随笔开始,我们一起领略.Net+Mysql的强势!
一、Mysql数据库
现在最新版本是5.0.27,可从官方网站或mysql中文网站下载到。
详细的安装方法:参考http://bbs.mysql.cn/thread-261-1-1.html
二、数据连接
众所周知,.Net的数据访问使用ADO.NET,而.net中没有提供myql的专用连接工具(比如sql server的sql client),不过mysql.com提供所有用于my的数据连接工具,这里我们用MySql.Data.dll ,里边封装了所有的mysql数据库的ADO.NET操作,作用方法与SQL SERVER没什么两样(举个例子:SQL SERVER中的SqlCommand,在MYSQL中就叫MySqlCommand)。

这个东东的下载地址:http://dev.mysql.com/downloads/connector/net/1.0.html
现在有三个版本:1.0.7 (GA),1.0.8 (RC),5.0.3
使用方法:把MySql.Data.dll 放到bin目录下,再引用using MySql.Data.MySqlClient;
三、数据管理
SQL SERVER有企业管理器,有查询分析器,那MYSQL有没有?mysql这些工具不像sqlserver 那样集成提供,mysql有很多管理工具,如:phpMyAdmin,Mysql Front等,而我推荐的是EMS SQL Manager 2005 for MySQL,现在最新版本是
3.7.7.1。它有两个类型:
SQL Manager 2005 for MySQL
SQL Manager 2005 Lite for MySQL
第一个要收费的,一直没有找到完全的破解,第二个是免费的随便使用,功能绝对够你开发用了
下载地址:http://www.sqlmanager.net/en/products/mysql/manager/download


推荐网站:
mysql官方网站:http://www.mysql.com
mysql中文网站:http://www.mysql.cn
EMS SQL Manager for MySQL工具的官方网站:http://www.sqlmanager.net
MySql.Data.dll下载地址:http://dev.mysql.com/downloads/
http://free5.ys168.com/?dotnetly
using MySql.Data.MySqlClient;
public partial class Msg : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string conn = "Data Source=127.0.0.1;User ID=root;Password=123;DataBase=NewDB;Charset=gb2312;";
MySqlConnection con = new MySqlConnection(conn);
con.Open();
MySqlCommand cmd = new MySqlCommand("select * from book",con);
MySqlDataReader dr = cmd.ExecuteReader();
GridView1.DataSource = dr;
GridView1.DataBind();
dr.Close();
con.Close();
}
}
需要说明的是:MySql中的参数化不同于SqlServer
Sqlserver的参数化写法:
myCommand.Parameters.Add(new SqlParameter("@Address", SqlDbType.NVarChar, 40));
myCommand.Parameters["@Address"].Value = address.Value;
MySql的参数化写法:
cmd.Parameters.Add(new MySqlParameter("?p_bname", MySqlDbType.VarChar, 50));
cmd.Parameters["?p_bname"].Value = book.Text;
.net是现在众多开发者的选择、而mysql数据一直以轻型、快速、免费深得许多开发者的暧昧、而php+mysql一直是许多大型网站所采用的方式。那能不能用.net+mysql这种组合方式了,当然可以,从这一篇随笔开始,我们一起领略.Net+Mysql的强势!
一、Mysql数据库
现在最新版本是5.0.27,可从官方网站或mysql中文网站下载到。
详细的安装方法:参考http://bbs.mysql.cn/thread-261-1-1.html
二、数据连接
众所周知,.Net的数据访问使用ADO.NET,而.net中没有提供myql的专用连接工具(比如sql server的sql client),不过mysql.com提供所有用于my的数据连接工具,这里我们用MySql.Data.dll ,里边封装了所有的mysql数据库的ADO.NET操作,作用方法与SQL SERVER没什么两样(举个例子:SQL SERVER中的SqlCommand,在MYSQL中就叫MySqlCommand)。
这个东东的下载地址:http://dev.mysql.com/downloads/connector/net/1.0.html
现在有三个版本:1.0.7 (GA),1.0.8 (RC),5.0.3
使用方法:把MySql.Data.dll 放到bin目录下,再引用using MySql.Data.MySqlClient;
三、数据管理
SQL SERVER有企业管理器,有查询分析器,那MYSQL有没有?mysql这些工具不像sqlserver 那样集成提供,mysql有很多管理工具,如:phpMyAdmin,Mysql Front等,而我推荐的是EMS SQL Manager 2005 for MySQL,现在最新版本是
3.7.7.1。它有两个类型:
SQL Manager 2005 for MySQL
SQL Manager 2005 Lite for MySQL
第一个要收费的,一直没有找到完全的破解,第二个是免费的随便使用,功能绝对够你开发用了
下载地址:http://www.sqlmanager.net/en/products/mysql/manager/download
推荐网站:
mysql官方网站:http://www.mysql.com
mysql中文网站:http://www.mysql.cn
EMS SQL Manager for MySQL工具的官方网站:http://www.sqlmanager.net
一、建立数据库、表、添加数据
这里我们使用图形化操作的SQL Manager 2005 Lite for MySQL来建立数据,它的操作界面非常类似OFFICE软件,使用方便、很容量上手、下面开始建立数据库及表
单击"Creat New DataBase":新建DB

输入密码:


选择客户端编码为gb2312,防乱码;也可以在新建好的数据库右键选择"DataBase Registration Info"更改编码:

新建表:输入表名:

新建字段


点击加号,手动添加数据,点出对号,提交数据:

选择DDL选项,直接看到刚才操作的脚本;也可以不用上面的方式操作,直接写sql脚本来创建数据:

二、ADO.NET数据操作
推荐使用MySQL Connector Net 5.0.3
web.config添加连接字符串:
<add name="MySqlServer" connectionString="Data Source=127.0.0.1;User ID=root;Password=123;DataBase=BOOK;Charset=gb2312"/>
为了方便,把对数据的访问封装到一个类中:
在页面中我们用一个gridview实现数据的读取、写入、编辑、删除等操作:

数据绑定:
其它编辑等操作代码等请下载文件
下载详细完整的代码文件/Files/chy710/MySQL_ADONET.rar
下篇预告:mysql开发中的乱码问题
这里我们使用图形化操作的SQL Manager 2005 Lite for MySQL来建立数据,它的操作界面非常类似OFFICE软件,使用方便、很容量上手、下面开始建立数据库及表
单击"Creat New DataBase":新建DB
输入密码:
选择客户端编码为gb2312,防乱码;也可以在新建好的数据库右键选择"DataBase Registration Info"更改编码:
新建表:输入表名:
新建字段
点击加号,手动添加数据,点出对号,提交数据:
选择DDL选项,直接看到刚才操作的脚本;也可以不用上面的方式操作,直接写sql脚本来创建数据:
二、ADO.NET数据操作
推荐使用MySQL Connector Net 5.0.3
web.config添加连接字符串:

为了方便,把对数据的访问封装到一个类中:
1
// 执行sql
2
public int ExecuteSql(string strSql, MySqlParameter [] myPar)
3
{
4
try
5
{
6
myConnection.Open();
7
MySqlCommand cmd = new MySqlCommand(strSql, myConnection);
8
if (myPar != null)
9
{
10
foreach (MySqlParameter spar in myPar)
11
{
12
cmd.Parameters.Add(spar);
13
}
14
}
15
int result = cmd.ExecuteNonQuery();
16
myConnection.Close();
17
return result;
18
}
19
catch
20
{
21
return 0;
22
}
23
}
获取数据:
2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

1
public DataSet GetDataSet(string strSql)
2
{
3
try
4
{
5
MySqlDataAdapter da = new MySqlDataAdapter(strSql, myConnection);
6
DataSet ds = new DataSet();
7
da.Fill(ds);
8
return ds;
9
}
10
catch
11
{
12
return null;
13
}
14
}

2

3

4

5

6

7

8

9

10

11

12

13

14

在页面中我们用一个gridview实现数据的读取、写入、编辑、删除等操作:
数据绑定:
1
//databind
2
protected void BindGrid()
3
{
4
DataSet ds = obj.GetDataSet("SELECT * FROM book ORDER BY bid");
5
GridView1.DataSource = ds;
6
GridView1.DataBind();
7
ds.Dispose();
8
}
添加数据:
2

3

4

5

6

7

8

1
string strSQL = "INSERT INTO book (bname,author,publish) VALUES (?bname,?author,?publish)";
2
MySqlParameter[] mysp =
3
{
4
new MySqlParameter ("?bname",MySqlDbType.VarChar ),
5
new MySqlParameter ("?author",MySqlDbType.VarChar),
6
new MySqlParameter ("?publish",MySqlDbType.VarChar)
7
};
8
mysp[0].Value = txtName.Text.Trim();
9
mysp[1].Value = txtAuthor.Text.Trim();
10
mysp[2].Value = txtPublish.Text.Trim();
11
if (obj.ExecuteSql(strSQL, mysp) == 1)
12
{
13
Response.Write("<script>alert('提交成功');</script>");
14
BindGrid();
15
txtName.Text = txtAuthor.Text = txtPublish.Text = "";
16
}
注意参数符号是"?"而不是"@",这一点不同于sql server
2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

其它编辑等操作代码等请下载文件
下载详细完整的代码文件/Files/chy710/MySQL_ADONET.rar
下篇预告:mysql开发中的乱码问题
使用过MySQL的朋友都知道有乱码问题困扰,而出现此问题都是因没有正确设置其编码造成;
假设现在要做一个简体中文网站;
一、设置数据库编码
安装mysql时可选择编码,如果已经安装过,可以更改文件my.ini(此文件在mysql的安装目录下)中的配制以达到目的;打开文件找到两处:
[client]

port=3306

[mysql]

default-character-set=gb2312
# The default character set that will be used when a new schema or table is
# created and no character set is defined
default-character-set=gb2312
更改红色部分为gb2312
此时新建数据库后,数据库目录下有个db.opt文件,内容如下:
default-character-set=gb2312
default-collation=gb2312_chinese_ci
编码数据库一致
二、客户端工具编码

编码设置与数据库
编码相同,可以用客户端工具直接写入数据,不产生乱码;
三、web.config中设置
连接字符串中的编码,MySQL Connector Net 5.0.3用
<connectionStrings>
<add name="MySqlServer" connectionString="Data Source=127.0.0.1;User ID=root;Password=123;DataBase=BOOK;Charset=gb2312"/>
</connectionStrings>
读取写入的编码
<globalization responseEncoding ="gb2312" requestEncoding ="gb2312"/>
public static CharacterSet GetChararcterSet(DBVersion version, string CharSetName)
{
CharacterSet cs = (CharacterSet)mapping[CharSetName];
if (cs == null)
throw new MySqlException("Character set '" + CharSetName + "' is not supported");
return cs;
}
private static void LoadCharsetMap()
{
mapping.Add("latin1", new CharacterSet("latin1", 1));
mapping.Add("big5", new CharacterSet("big5", 2));

.
}
假设现在要做一个简体中文网站;
一、设置数据库编码
安装mysql时可选择编码,如果已经安装过,可以更改文件my.ini(此文件在mysql的安装目录下)中的配制以达到目的;打开文件找到两处:










此时新建数据库后,数据库目录下有个db.opt文件,内容如下:


二、客户端工具编码
编码设置与数据库
编码相同,可以用客户端工具直接写入数据,不产生乱码;
三、web.config中设置
连接字符串中的编码,MySQL Connector Net 5.0.3用




OK,此时设置完成,做好的网站即一个简体中文网站,不会有乱码的;
如果需要做一个繁体网站,把以上设置编码的地方变成"gbk"即可。
常见问题:
Character set 'gbk' is not supported
出现此问题,十有八九可能你用了底版本的MySQL Connector ,因为在MySQL Connector 1.07中提供的字符编码是有限的,找到不到web.config中设置的编码类型,没有gbk,不过好像有big5,具体请看MySQL Connector 1.07源码中的CharSetMap.cs文件,其中















而MySQL Connector 5.03中提供的字符编码相当全面了,所以建议使用5.03,不过5.03与旧版本的mysql数据库有些地方不太兼容。在执行存储过程等大的数据操作时会出现:
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding
http://www.cnblogs.com/chy710/archive/2007/02/25/656149.html