ASP.NET 2.0에서 ObjectDataSource와 함께 MySQL 5를 사용하는 방법에 대한 간단한 설명을 찾을 수 없었기 때문에 이 예제를 만들었습니다.
소개
ASP.NET 2.0에서 ObjectDataSource와 함께 MySQL 5를 사용하는 방법에 대한 간단한 설명을 찾을 수 없었기 때문에 이 예제를 만들었습니다.
말하자면, 저는 MySQL에 정말 깊은 인상을 받았습니다. 내 Windows XP 컴퓨터에 쉽게 설치하고 약 한 시간 만에 실행할 수 있었습니다. 저는 오랫동안 MS SQL을 사용했는데, Oracle과 Firebird를 사용하는 데 매우 좌절감을 느꼈습니다. 문제는 제가 MS SQL Server를 사용하지 못한다는 것입니다. 하지만 저는 바쁘고 사용하기 쉬운 도구를 좋아합니다 :)
MySQL과 ASP.NET을 시작하는 경우 다음 단계를 권장합니다
. MySQL 웹사이트에 접속하여 “현재 릴리스(권장)”를 다운로드하여 설치합니다.
다운로드 및 설치: MySQL 관리자(MySQL 서버를 관리하기 위해 첫 번째 다운로드에서는 서버만 설치합니다).
다운로드 및 설치: Connector/Net 1.0(ASP.NET 페이지가 MySQL 서버와 통신하려면 이 버전이 필요합니다).
다음을 다운로드할 수도 있습니다. MySQL 쿼리 브라우저 – (MySQL 데이터베이스로 작업하고 쿼리를 실행하는 그래픽 클라이언트)
이 가이드를 읽고 따르십시오: ASP.NET에서 MySQL을 사용하기 위한 단계별 가이드.
코드를 설치하려면:
MySQL 5가 실행 중이어야 합니다.
MySQL 커넥터/Net 1.0을 설치합니다.
Test라는 이름의 MySQL 5 데이터베이스를 만듭니다.
해당 데이터베이스에 Message라는 테이블을 만듭니다.
CREATE TABLE test.message ( Entry_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, 이름 VARCHAR(45), 이메일 VARCHAR(45), 메시지 VARCHAR(200), PRIMARY KEY (Entry_ID) ) AUTO_INCREMENT=32 CHARACTER SET latin1 COLLATE latin1_swedish_ci;
테스트 데이터베이스에 다음 네 가지 MySQL 저장 프로시저를 만듭니다.
절차 `test`.`DeleteMessage`(IN param1 INT)BEGINDelete From test.messageWHERE Entry_ID = param1;END
PROCEDURE `test`.`InsertMessage`(IN param1 VARCHAR(50), IN param2 VARCHAR(50), IN param3 VARCHAR(200))BEGININSERT INTO message(이름, 이메일, 메시지)VALUES(param1,param2,param3);END
절차 `test`.`ShowAll`()BEGINSELECT message.Entry_ID, message.Name, message.Email, message.MessageFROM test.message;END
PROCEDURE `test`.`UpdateMessage`(IN paramkey INT, IN param1 VARCHAR(50), IN param2 VARCHAR(50), IN param3 VARCHAR(200))BEGINUPDATE messageSET Name = param1, Email = param2, Message = param3WHERE (message. Entry_ID = 매개변수 키);END
"MySQL"의 압축을 풀고 이를 가리키도록 IIS를 구성합니다. 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)]공용 정적 클래스 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()) { MessageItem MessageItem = new MessageItem(); MessageItem.Entry_ID = Convert.ToInt32(dr["Entry_ID"]); MessageItem.Message = Convert.ToString(dr["Message"]); MessageItem.Name = Convert.ToString(dr["이름"]); MessageItem.Email = Convert.ToString(dr["Email"]); MessageItemlist.Add(MessageItem); } dr.Close(); MessageItemlist를 반환합니다. } [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 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 { get { return _Entry_ID; } 설정 { _Entry_ID = 값; } } 공개 문자열 메시지 { get { return _Message; } 설정 { _Message = 값; } } 공개 문자열 이름 { get { return _Name; } set { _Name = 값; } } 공개 문자열 이메일 { get { return _Email; } 세트 { _Email = 값; } }}
이는 ObjectDataSource 컨트롤과 데이터 편집을 위한 GridView 및 레코드 삽입을 위한 DetailsView를 포함하는 .aspx 파일입니다.