[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;

  • หมายเหตุ

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

Leave a comment