أنشأت هذا المثال لأنني لم أتمكن من العثور على شرح بسيط لاستخدام MySQL 5 مع ObjectDataSources في ASP.NET 2.0.
مقدمة
لقد قمت بإنشاء هذا المثال لأنني لم أتمكن من العثور على شرح بسيط لاستخدام MySQL 5 مع ObjectDataSources في ASP.NET 2.0.
اسمحوا لي أن أقول إنني معجب حقًا بـ MySQL. لقد تمكنت من تثبيته بسهولة على جهازي الذي يعمل بنظام التشغيل Windows XP وتشغيله خلال ساعة تقريبًا. أنا من مستخدمي MS SQL منذ فترة طويلة، وكنت محبطًا جدًا من محاولة استخدام Oracle وFirebird. أدرك أن المشكلة تكمن في أنني مدلل من MS SQL Server، لكنني مشغول وأحب الأدوات سهلة الاستخدام :)
إذا كنت تبدأ في استخدام MySQL وASP.NET، فإنني أوصي بالخطوات التالية:
اذهب إلى موقع MySQL، قم بتنزيل وتثبيت "الإصدار الحالي (مستحسن)".
التنزيل والتثبيت: MySQL Administrator (لإدارة خادم MySQL الخاص بك، يقوم التنزيل الأول بتثبيت الخادم فقط).
التنزيل والتثبيت: Connector/Net 1.0 (تحتاج إلى هذا حتى تتمكن صفحات ASP.NET الخاصة بك من الاتصال بخادم MySQL الخاص بك).
يمكنك أيضًا تنزيل: MySQL Query Browser - (عميل رسومي للعمل مع قواعد بيانات MySQL الخاصة بك وتشغيل الاستعلامات).
اقرأ واتبع هذا الدليل: دليل خطوة بخطوة لاستخدام MySQL مع ASP.NET.
لتثبيت الكود:
يجب أن يكون لديك MySQL 5 قيد التشغيل.
قم بتثبيت MySQL Connector/Net 1.0.
قم بإنشاء قاعدة بيانات MySQL 5 باسم Test.
قم بإنشاء جدول في قاعدة البيانات تلك يسمى الرسالة:
إنشاء جدول test.message ( Entry_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT، الاسم VARCHAR(45)، البريد الإلكتروني VARCHAR(45)، الرسالة VARCHAR(200)، المفتاح الأساسي (Entry_ID)) ) AUTO_INCREMENT=32 CHARACTER SET latin1 COLLATE latin1_swedish_ci;
قم بإنشاء إجراءات MySQL الأربعة المخزنة في قاعدة بيانات الاختبار:
الإجراء `اختبار`.`DeleteMessage`(IN param1 INT)BEGINحذف من test.messageWHERE Entry_ID = param1;END
الإجراء `اختبار`.`InsertMessage`(IN param1 VARCHAR(50)، IN param2 VARCHAR(50)، IN param3 VARCHAR(200))BEGININSERT INTO message(Name, Email, message)VALUES(param1,param2,param3);END
PROCEDURE `اختبار`.`ShowAll`()BEGINSELECT message.Entry_ID, message.Name, message.Email, message.MessageFROM test.message;END
الإجراء `اختبار`.`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 للإشارة إليه. تأكد من تكوين خادم الويب لاستخدام ASP.NET 2.0.
افتح "web.config" وقم بتغيير السطر:
للاتصال بقاعدة بيانات MySQL الخاصة بك.
استعرض للوصول إلى صفحة default.aspx من خلال IIS.
هذه هي الفئة التي تستخدم الوراثة لتوفير البيانات التي يستهلكها عنصر التحكم ObjectDataSource:
باستخدام System;باستخدام System.Collections.Generic;باستخدام System.Data;باستخدام MySql.Data.MySqlClient;باستخدام System.Configuration;باستخدام System.ComponentModel ;[DataObject(true)]فئة ثابتة عامةMessagesDB{ سلسلة ثابتة خاصة 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); List messageItemlist = new List(); while (dr.Read()) {MessageItemMessageItem = newMessageItem(); 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); } dr.Close(); إرجاع قائمة عناصر الرسالة؛ } [DataObjectMethod(DataObjectMethodType.Insert)] public static 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)] public static 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)] public static int حذفMessage(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:
use System;public class messageItem{ int _Entry_ID; سلسلة _رسالة؛ سلسلة _Name؛ سلسلة _البريد الإلكتروني؛ public messageItem() { } public int Entry_ID { get { return _Entry_ID; } set { _Entry_ID = value; } } رسالة سلسلة عامة { get { return _Message; } set { _Message = value; } } اسم السلسلة العامة { get { return _Name; } set { _Name = value; } } سلسلة عامة البريد الإلكتروني { get { return _Email; } set { _Email = value; } }}
هذا هو الملف .aspx الذي يحتوي على عنصر التحكم ObjectDataSource بالإضافة إلى GridView لتحرير البيانات وDetailsView لإدراج سجل: