建立這個範例是因為我找不到在 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
在 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,訊息= 3mes3age . 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(truetrue )]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 檔案: