หากคุณไม่เพียงแต่ทำงานในบริษัทกลุ่มใหญ่เท่านั้น คุณจะมีโอกาสได้ติดต่อกับ MySQL อย่างแน่นอน แม้ว่าจะไม่รองรับการประมวลผลธุรกรรมและขั้นตอนการจัดเก็บ แต่ฟังก์ชันที่มีให้ก็สามารถตอบสนองความต้องการส่วนใหญ่ของคุณได้อย่างแน่นอน สรุปได้ว่า MySQL มีข้อดีเฉพาะบางประการเช่นกัน ในบางกรณี ความเร็วของมันก็เร็วกว่าฐานข้อมูลขนาดใหญ่ด้วยซ้ำ
จะเข้าถึงฐานข้อมูล MySQL ใน .NET ได้อย่างไร? บางทีหลายๆ คนอาจพูดทันทีว่า: ใช้ OLEDB แต่ในความเป็นจริงแล้ว การใช้ .NET OleDb Data Provider ไม่สามารถเข้าถึง MySQL ได้ หากคุณใช้ ระบบจะแจ้งให้คุณทราบ: "Net Data OLE DB Provider (System.Data.Odbc) ไม่ สนับสนุนผู้ให้บริการ MSDASQL (ผู้ให้บริการ Microsoft OLE DB สำหรับไดรเวอร์ Odbc) ฉันไม่รู้ว่าทำไม ตามที่ผู้เขียน MySQLDriverCS ระบุว่า "ถูกละทิ้งโดยเจ้าของ" ฮ่าฮ่า
โชคดีที่เรามีตัวเลือกอื่น ต่อไปนี้เป็นสองวิธีในการเข้าถึงฐานข้อมูล MySQL
การใช้ ODBC.NET
ODBC.NET (ชื่อเต็มของ ODBC .NET Data Provider) เป็นส่วนประกอบเสริมของ .NET Framework ฟรีที่ต้องดาวน์โหลดจากเว็บไซต์ Microsoft ที่อยู่การดาวน์โหลดคือ: http://download.microsoft.com /download/ dasdk/Install/1.0.4030.0/W98NT42KMeXP/EN-US/odbc_net.msi ซึ่งต้องการให้ระบบติดตั้ง MDAC 2.7 หรือสูงกว่า นอกจากนี้ คุณยังต้องติดตั้งไดรเวอร์ ODBC สำหรับ MySQL ที่อยู่ดาวน์โหลดคือ: http://www.mysql.com/downloads/api-myodbc-2.50.html คุณยังต้องกำหนดค่า DSN ในไฟล์ "ODBC ตัวจัดการแหล่งข้อมูล"
ในแง่ของการออกแบบวัตถุ ODBC.NET จะเหมือนกับ OLEDB, SQL ฯลฯ คือ OdbcConnection, OdbcCommand, OdbcDataAdapter, OdbcDataReader การใช้งานจะเหมือนกันทุกประการ หากคุณต้องการใช้ ODBC .NET เพื่อแทนที่ OleDb ก่อนหน้า NET Data Provider ที่จริงแล้วคุณสามารถแก้ไขโปรแกรมของคุณได้อย่างสมบูรณ์โดยการค้นหาและแทนที่
นี่คือโค้ดตัวอย่าง:
ลอง
-
string constr = "DSN=MySQL;" + "UID=;" ;
conn = OdbcConnection ใหม่ (constr);
conn.เปิด();
string query = "ใส่เข้าไปใน test.dbtablevalues10,'disksidkfsdi', 'asdfaf', 'adsfasdf')";
สตริง tmp = โมฆะ;
OdbcCommand cmd = ใหม่ OdbcCommand (แบบสอบถาม, conn);
สำหรับ(int i = 0; i < 100000; i++)
-
cmd.ExecuteNonQuery();
-
cmd.ทิ้ง();
conn.ปิด();
query = "เลือก * จาก test.dbtable";
OdbcCommand cmd2 = newOdbcCommand (แบบสอบถาม, conn);
conn.เปิด();
เครื่องอ่าน OdbcDataReader = cmd2.ExecuteReader();
ในขณะที่ (reader อ่าน ())
-
tmp = เครื่องอ่าน [0].ToString();
tmp = เครื่องอ่าน [1].ToString();
tmp = เครื่องอ่าน [2].ToString();
tmp = เครื่องอ่าน [3].ToString();
-
conn.ปิด();
query = "ลบออกจาก test.dbtable";
OdbcCommand cmd3 = newOdbcCommand (แบบสอบถาม, conn);
conn.เปิด();
cmd3.ExecuteNonQuery();
-
จับ (ข้อยกเว้นเช่น)
-
MessageBox.Show(เช่น ข้อความ);
-
ในที่สุด
-
conn.ปิด();
-
ใครก็ตามที่เขียนแอปพลิเคชันฐานข้อมูลใน C# ต้องรู้ว่าโค้ดข้างต้นดำเนินการแทรกข้อมูลและอ่านข้อมูลหนึ่งแสนครั้ง และสุดท้ายจะลบบันทึกข้อมูลทั้งหมด
คนส่วนใหญ่อาจไม่ทราบเรื่องนี้
เมื่อใช้ MySQLDriverCS
MySQLDriverCS เป็นไดรเวอร์ .NET แบบโอเพ่นซอร์สฟรีสำหรับฐานข้อมูล MySQLเช่นเดียวกับ Sql .NET Data Provider สำหรับ Sql Server ซึ่งได้รับการออกแบบมาเป็นพิเศษสำหรับ MySQL และสามารถเรียกว่า MySQL .NET Data Provider ไม่จำเป็นต้องตั้งค่าแหล่งข้อมูล ODBC เพิ่มเติมเพื่อใช้งาน โดยพื้นฐานแล้ว ตราบใดที่คุณสามารถเชื่อมต่อกับ MySQL ได้ คุณก็สามารถเข้าถึงได้ผ่าน MySQLDriverCS
MySQLDriverCS เป็นโครงการบน SourceForge.NET แต่ด้วยเหตุผลบางอย่างที่ไม่ทราบ ทำให้ไม่สามารถเข้าถึงเว็บไซต์นี้ในประเทศจีนได้
ต่อไปนี้เป็นตัวอย่างโค้ดที่ใช้ MySQLDriverCS :
MySQLConnection conn = null;
พยายาม
-
string connstr = "แหล่งข้อมูล=MySQL;รหัสผ่าน=root;รหัสผู้ใช้=root;Location=localhost";
conn = MySQLConnection ใหม่ (constr);
conn.เปิด();
string query = "ใส่เข้าไปในค่า test.dbtable (10, 'disksidkfsdi', 'asdfaf', 'adsfasdf')";
สตริง tmp = โมฆะ;
MySQLCommand cmd = MySQLCommand ใหม่ (แบบสอบถาม, conn);
สำหรับ(int i = 0; i < 100000; i++)
-
cmd.ExecuteNonQuery();
-
cmd.ทิ้ง();
conn.ปิด();
query = "เลือก * จาก test.dbtable";
MySQLCommand cmd2 = MySQLCommand ใหม่ (แบบสอบถาม, conn);
conn.เปิด();
เครื่องอ่าน MySQLDataReader = cmd2.ExecuteReaderEx();
ในขณะที่ (reader อ่าน ())
-
tmp = เครื่องอ่าน [0].ToString();
tmp = เครื่องอ่าน [1].ToString();
tmp = เครื่องอ่าน [2].ToString();
tmp = เครื่องอ่าน [3].ToString();
-
conn.ปิด();
query = "ลบออกจาก test.dbtable";
MySQLCommand cmd3 = MySQLCommand ใหม่ (แบบสอบถาม, conn);
conn.เปิด();
cmd3.ExecuteNonQuery();
-
จับ (ข้อยกเว้นเช่น)
-
MessageBox.Show(เช่น ข้อความ);
-
ในที่สุด
-
conn.ปิด();
}
เกือบจะเหมือนกันทุกประการกับโค้ดข้างต้น ข้อแตกต่างคือ Odbc กลายเป็น MySQL นอกจากนี้ สิ่งหนึ่งที่ควรทราบก็คือวิธี ExecuteReader ของ Command ได้กลายเป็น ExecuteReaderEx ใน MySQLDriverCS เอกสารที่แนบมาเพื่อดูรายละเอียด
การทดสอบประสิทธิภาพ
ผู้อ่านบางคนได้เห็นวัตถุประสงค์ของโค้ดที่ฉันเขียนข้างต้นจริงๆ แล้ว จุดประสงค์คือเพื่อทำการทดสอบประสิทธิภาพจริงๆ เวลาดำเนินการของโค้ดสองชิ้นข้างต้นคือ: ประมาณ 24 วินาทีสำหรับ ODBC.NET และประมาณ 17 วินาทีสำหรับ MySQLDriverCS ผลลัพธ์จึงไม่น่าแปลกใจ เนื่องจาก MySQLDriverCS เป็นตัวขับเคลื่อนข้อมูลโดยเฉพาะจึงเร็วกว่า ODBC.NET มาก
สรุป
บทความนี้จะแนะนำวิธีการเข้าถึงฐานข้อมูล MySQL สองวิธีและดำเนินการทดสอบประสิทธิภาพอย่างง่าย ๆ ฉันหวังว่าวิธีนี้จะช่วยให้ผู้อ่านได้รับข้อมูลอ้างอิงอันมีค่าเมื่อใช้ฐานข้อมูล MySQL เพื่อพัฒนาแอปพลิเคชัน .NET