[C#] การใช้งานฐานข้อมูล MySQL ด้วย C# : การใช้งานพื้นฐานอย่างการ Select, Insert, Update

mysql_connector_net_main2.jpg
หลังจากดูตัวอย่างการใช้งานพื้นฐานอย่าง Insert ใน [C#] การใช้งานฐานข้อมูล MySQL ด้วย C# : เตรียมความพร้อมและการเชื่อมต่อไปแล้ว ออฟก็เลยจะมาให้ตัวอย่างการใช้งานอย่าง Update, Select ข้อมูลกันบ้าง รวมไปถึงทิปและเทคนิคอีกนิดหน่อยอย่างการ insert วันที่ลงใน type datetime ซึ่งต้องมีการจัดรูปแบบกันนิดนึง รวมไปถึงการดึงค่า id หลังจากที่ insert ข้อมูลด้วย

  • ตัวอย่างการใช้งานอย่าง Update

การใช้งานไม่ต่างจากการ Insert เท่าไหร่นักเพียงเปลียนข้อมูลในส่วนของคำสั่ง SQL เท่านั้นเองค่า

 
            //create connection string
            string ConnectionString = "SERVER=localhost;" +
                                      "DATABASE=sds_result;" +
                                      "UID=root;" +
                                      "PASSWORD=123456;";
            MySqlConnection connection = new MySqlConnection(ConnectionString);

            //Connecting to MySQL
            connection.Open();

            // Perform databse operations
            DateTime time = DateTime.Now;
            string time_finished = String.Format("{0:yyyy-MM-dd HH:mm:ss}", time);

            //SQL Command
            sql = "UPDATE sds_result ";
            sql += "SET status='1', result_xml='"+result+"', time_finished='"+time_finished+"'";
            sql += "WHERE id='"+jobid+"'";
            MySqlCommand cmd = new MySqlCommand(sql, connection);

            //Use ExecuteNonQuery to insert data. 
            cmd.ExecuteNonQuery();

            //Close Connection
            connection.Close();
  • ตัวอย่างการใช้งานอย่าง Select หรือการดึงข้อมูลจากฐานข้อมูล

การใช้งานจะต่างไปจากการ Insert และ update นิดหน่อยตรงส่วนของคำสั่ง SQL และการใช้  ExecuteReader :  ใช้ในการดึงข้อมูลจากฐานข้อมูล เช่น cmd.ExecuteReader(); แทน ExecuteNonQuery ซึ่งใช้ในการ insert และ delete ข้อมูล

 
            //create connection string
            string ConnectionString = "SERVER=localhost;" +
                                      "DATABASE=sds_result;" +
                                      "UID=root;" +
                                      "PASSWORD=123456;";

            MySqlConnection connection = new MySqlConnection(ConnectionString);

            //Connecting to MySQL
            connection.Open();

            //SQL Command
            sql = "SELECT result_xml, file_submissions";
            sql += "FROM sds_result";
            sql += "WHERE status ='1' AND id='"+jobid;
            MySqlCommand cmd = new MySqlCommand(sql, connection);
            
            //Use ExecuteReader to query data
            cmd.ExecuteReader();

            //Close Connection
            connection.Close();
  • การ Insert วันที่ลงในฐานข้อมูล type datetime

เมื่อเราต้องการเก็บค่าวันปัจจุบันลงในฐานข้อมูล เราต้องทำการจัดรูปแบบข้อมูลที่ได้มาก่อน เนื่องจากรูปแบบการเก็บวันที่ของ C# ที่ดึงวันที่ปัจจุบันนั้นจะอยู่ในรูปแบบของ แต่ในฐานข้อมูลฟิลด์ datetime จะมีการเก็บข้อมูลในรูปแบบของ yyyy-MM-dd HH:mm:ss เราก็เลยต้องทำการจัดรูปแบบกันก่อนนั่นเอง

  1. เก็บค่าวันและเวลาปัจจุบัน โดยใช้ DateTime time = DateTime.Now;
  2. ทำการจัดรูปแบบข้อมูลใหม่
    string time_started = String.Format(“{0:yyyy-MM-dd HH:mm:ss}”, time);
  3. จากนั้นค่อยนำค่า time_started เก็บลงฐานข้อมูล
  • การดึงค่า id หลังจากที่ insert ข้อมูล

เทคนิคนี้ก็ไม่ใช่เทคนิคพิเศษอะไรมากมายเพียงแต่ว่าบางครั้งหลังจากที่เรา Insert ข้อมูลลงฐานข้อมูลแล้วเราอาจจะต้อง ค่า auto increment อย่าง id ในตารางที่เราเพิ่งทำการใส่่ข้อมูลเข้าไป ตัวอย่างเช่นโปรเจ็คของออฟหลังจากที่ผู้ใช้ส่งการบ้านเข้ามาตรวจการลอกกับ Web service ตัว Web service เองจะทำการสร้าง record ในการตรวจและส่งค่า jobid กลับไปให้ก่อน เนื่องจากว่าการตรวจอาจจะต้องใช้เวลาทำให้ผู้ใช้ไม่สามารถได้รับผลที่ต้องการเลยทันที ดังนั้นหลังจากที่ออฟทำการสร้าง record เพื่อบันทึกการรับการบ้านเข้ามาตรวจแล้ว ออฟก็ต้องการ id เพื่อส่งคืนให้ผู้ใช้นั่นเอง

การดึงค่า id หลังจากที่ insert ข้อมูล ก็ทำได้โดยใช้คำสั่ง LastInsertedId ซึ่งจะได้ผลออกมาเป็น long ถ้าต้องการแปลงเป็น int ก็ให้ใส่ (int) เข้าไปด้วย ตัวอย่างการใช้งาน int jobid = (int)cmd.LastInsertedId;

  • หมายเหตุ

- ระำวังการนำโค้ดไปใช้ในส่วนของโค้ดที่มีเครื่องหมาย ” ” เนื่องจากเวลากอปไปวางแล้วอาจจะทำให้ไม่สามารถใช้งานโค้ดได้

Tags: , , , , ,

Leave a Reply

2 Comments

  • TheLife
    April 22, 2011 | Permalink | Reply

    อยากทราบการ select ข้อมูลที่ละเอียดกว่านี้อ่ะครับ
    อยากทราบว่า การใช้ C# ติดต่อฐานข้อมูลแบบ MySQL สามารถทำ DataSource ได้ไหมครับ แบบว่า ลากฟิลจาก DataSource มาวางๆๆบนฟอร์มการทำงานอ่ะครับ

    • April 30, 2011 | Permalink | Reply

      ออฟไม่เคยลากฟิลมาวางอะ ก็เลยตอบไม่ได้เหมือนกัน โทษทีนะคะ = =”

Leave a comment

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Your email is never shared. Required fields are marked *

Enjoy Eating

ร้านอาหารไทย »

รีวิวโดนใจ >> ชัยครับ หลากเมนูแปลกแต่อร่อยและน่าลองในราคาไม่แพง ที่ฉะเชิงเทรา

ร้านไอศกรีม »

รีวิวโดนใจ >> YooMoo (ยูมู่) ไอศกรีมโยเกิร์ตแบรนด์ดังจากอังกฤษแห่งแรกในไทยและแห่งเดียวในเอเชีย

บุฟเฟต์ปิ้งย่างและชาบู »

รีวิวโดนใจ >> อากะ (AKA) สวรรค์ของคนคลั่งเนื้อ ลองมากินเนื้อย่างแบบ Premium กันบ้างค่า

ร้านเค้ก-ขนม-ของหวาน »

รีวิวโดนใจ >> Mori Dessert Bar (โมริ) ร้านเบเกอรี่สไตล์ญี่ปุ่น อร่อยลงตัวที่ Siam Square One

ร้านอาหารญี่ปุ่น »

รีวิวโดนใจ >> Chiba Cham (ชิบะแชมป์) สนุกกับการกิน แล้วลืมความอ้วนไว้ที่บ้าน ในซอยสุขุมวิท 39

ร้านอาหารนานาชาติ »

รีวิวโดนใจ >> The Coffee Club เติมเต็มอาหารเช้าให้ลงตัว พร้อมเอาใจคอกาแฟ ที่เอกมัย

ร้านอาหารซีฟู๊ด »

รีวิวโดนใจ >>  ปูกรรเชียงซีฟู้ด ร้านอาหารทะเล บรรยากาศไทยๆ หลายเมนูอร่อย ที่แปดริ้ว

ร้านสเต็ก »

รีวิวโดนใจ >> Sizzler ออกเมนู “สเต็กไก่เทอริยากิ” มาเอาใจคนชอบทานสเต็กสไตล์ญี่ปุ่นแล้วค่า

ร้านอาหารอีสาน »

รีวิวโดนใจ >> ส้มตำคุณกัญจณ์ ร้านอาหารไทย-อีสานเจ้าประจำ อร่อยได้ในราคาเบาๆ ที่สุขุมวิท 101/1

ร้านอาหารเกาหลี »

รีวิวโดนใจ >> BonChon Chicken ไก่ทอดกรอบบอนชอนสไตล์เกาหลี สาขาสีลมคอมเพล็กซ์

ร้านอาหารอิตาเลียน »

รีวิวโดนใจ >> ลูกอิน (Look In) มาทานพิซซา พาสต้าแสนอร่อยกับบรรยากาศโดนใจ ในซอยสุขุมวิท 58

ร้านจีนและติ่มซำ »

รีวิวโดนใจ >> Grand Peking (แกรนด์ปักกิ่ง) ภัตตาคารอาหารจีนในห้าง The Shoppes

ร้านราเมน-ก๋วยเตี๋ยว »

รีวิวโดนใจ >> Fujiyama Go Go: แชมป์ราเมน-สึเคะเมน อร่อยน่าลอง สาขาสุขุมวิท 39

ร้านซูชิ »

รีวิวโดนใจ >> Kaguya (คางูยะ) Japanese Gastro Bar ของ Chef ก้อง เชฟกระทะเหล็ก

ห้องอาหารโรงแรม »

รีวิวโดนใจ >> Blue Spice บุฟเฟ่ต์อาหารโรงแรม Grand Centre Pointในราคา 440 บาท