创建这个示例是因为我找不到在 ASP.NET 2.0 中使用 MySQL 5 和 ObjectDataSources 的简单解释。
介绍
我创建这个示例是因为我找不到在 ASP.NET 2.0 中使用 MySQL 5 和 ObjectDataSources 的简单解释。
让我说,MySQL 给我留下了深刻的印象。我能够轻松地将其安装在我的 Windows XP 计算机上,并在大约一个小时内让它运行。我是 MS SQL 的长期用户,并且对尝试使用 Oracle 和 Firebird 感到非常沮丧。我意识到,问题是我被 MS SQL Server 宠坏了,但是嘿,我很忙,而且我喜欢易于使用的工具:)
如果您正在开始使用 MySQL 和 ASP.NET,那么我建议您执行以下步骤
:到MySQL网站,下载并安装“Current Release(推荐)”。
下载并安装:MySQL Administrator(用于管理您的 MySQL 服务器,第一次下载仅安装服务器)。
下载并安装:Connector/Net 1.0(您需要它来让 ASP.NET 页面与 MySQL 服务器通信)。
您还可以下载:MySQL 查询浏览器 –(用于处理 MySQL 数据库并运行查询的图形客户端)。
阅读并遵循本指南:将 MySQL 与 ASP.NET 结合使用的分步指南。
要安装代码:
您必须启动并运行 MySQL 5。
安装 MySQL 连接器/Net 1.0。
创建名为 Test 的 MySQL 5 数据库。
在该数据库中创建一个名为 Message 的表:
创建表 test.message ( Entry_ID INT(10) UNSIGNED NOT NULL AUTO_INCRMENT,名称 VARCHAR(45),电子邮件 VARCHAR(45),消息 VARCHAR(200),主键 (Entry_ID) ) AUTO_INCREMENT=32 字符集 latin1 COLLATE latin1_swedish_ci;
在 Test 数据库中创建这四个 MySQL 存储过程:
过程 `test`.`DeleteMessage`(IN param1 INT)BEGIN从 test.message 中删除WHERE Entry_ID = param1;END
过程 `test`.`InsertMessage`(IN param1 VARCHAR(50), IN param2 VARCHAR(50), IN param3 VARCHAR(200))BEGININSERT INTO message(姓名、电子邮件、消息)VALUES(param1,param2,param3);END
PROCEDURE `test`.`ShowAll`()BEGINSELECT message.Entry_ID, message.Name, message.Email, message.MessageFROM test.message;END
过程 `test`.`UpdateMessage`(IN paramkey INT,IN param1 VARCHAR(50),IN param2 VARCHAR(50),IN param3 VARCHAR(200))BEGINUPDATE messageSET 名称 = param1,电子邮件 = param2,消息 = param3WHERE (message. Entry_ID = 参数键);END
解压缩“MySQL”并配置 IIS 以指向它。确保将 Web 服务器配置为使用 ASP.NET 2.0。
打开“web.config”并更改行:
以连接到您的 MySQL 数据库。
通过 IIS 浏览到 default.aspx 页面。
这是使用 Generics 提供由 ObjectDataSource 控件使用的数据的类:
using System;using System.Collections.Generic;using System.Data;using MySql.Data.MySqlClient;using System.Configuration;using System.ComponentModel ;[DataObject(true)]public static class MessagesDB{ private static string GetConnectionString() { return ConfigurationManager.ConnectionStrings ["MySQLConnectionString"].ConnectionString; } [DataObjectMethod(DataObjectMethodType.Select)] public static List GetMessages() { MySqlCommand cmd = new MySqlCommand("ShowAll", new MySqlConnection(GetConnectionString())); cmd.CommandType = CommandType.StoredProcedure; cmd.Connection.Open(); MySqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); 列表 MessageItemlist = new List(); while (dr.Read()) { MessageItem MessageItem = new MessageItem(); MessageItem.Entry_ID = Convert.ToInt32(dr["Entry_ID"]); MessageItem.Message = Convert.ToString(dr["Message"]); MessageItem.Name = Convert.ToString(dr["Name"]); MessageItem.Email = Convert.ToString(dr["Email"]); MessageItemlist.Add(MessageItem); } 博士.Close(); 返回消息项列表; } [DataObjectMethod(DataObjectMethodType.Insert)] 公共静态 void InsertMessage(MessageItem MessageItem) { MySqlCommand cmd = new MySqlCommand("InsertMessage", new MySqlConnection(GetConnectionString())); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new MySqlParameter("param1", MessageItem.Name)); cmd.Parameters.Add(new MySqlParameter("param2", MessageItem.Email)); cmd.Parameters.Add(new MySqlParameter("param3", MessageItem.Message)); cmd.Connection.Open(); cmd.ExecuteNonQuery(); cmd.Connection.Close(); } [DataObjectMethod(DataObjectMethodType.Update)] 公共静态 int UpdateMessage(MessageItem MessageItem) { MySqlCommand cmd = new MySqlCommand("UpdateMessage", new MySqlConnection(GetConnectionString())); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new MySqlParameter("paramkey", MessageItem.Entry_ID)); cmd.Parameters.Add(new MySqlParameter("param1", MessageItem.Name)); cmd.Parameters.Add(new MySqlParameter("param2", MessageItem.Email)); cmd.Parameters.Add(new MySqlParameter("param3", MessageItem.Message)); cmd.Connection.Open(); int i = cmd.ExecuteNonQuery(); cmd.Connection.Close(); 返回我; } [DataObjectMethod(DataObjectMethodType.Delete)] 公共静态 int DeleteMessage(MessageItem MessageItem) { MySqlCommand cmd = new MySqlCommand("DeleteMessage", new MySqlConnection(GetConnectionString())); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new MySqlParameter("param1", MessageItem.Entry_ID)); cmd.Connection.Open(); int i = cmd.ExecuteNonQuery(); cmd.Connection.Close(); 返回我; }
上面的类使用“MessageItem”类将参数传入和传出 ObjectDataSource 控件:
using System;public class MessageItem{ int _Entry_ID; 字符串_消息; 字符串_名称; 字符串_电子邮件; 公共 MessageItem() { } 公共 int Entry_ID { 获取 { return _Entry_ID; } 设置 { _Entry_ID = 值; } } 公共字符串消息{ 获取{ 返回_Message; } 设置 { _Message = 值; } } 公共字符串名称 { get { return _Name; } 设置 { _Name = 值; } } 公共字符串电子邮件 { get { return _Email; } 设置 { _Email = 值; } }}
这是包含 ObjectDataSource 控件以及用于编辑数据的 GridView 和用于插入记录的 DetailsView 的 .aspx 文件: