Posts

Showing posts from 2017

[Java] การเชื่อมต่อ database ผ่าน Datasource

Image
          การเขียนโปรแกรมเชื่อมต่อฐานข้อมูลนอกจากจะเขียนต่อโดยตรง  การเชื่อมต่อ MySQL Database  ซึ่งเป็นการเชื่อมต่อที่ไม่ใช่วิธีที่ดีนัก เพราะเรา (developer) จะต้องรายละเอียดต่างๆ ตั้งแต่ยี่ห้อฐานข้อมูล, host, SID, username, password ไว้ในแอปฯ ของเรา หรือจะเรียกว่า "hard-code" ก็ไม่ผิด //Legacy Way Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/sys", "root", "1234");           สังเกตว่าเราจะต้องระบุ parameter กันไปโต้ง ๆ แบบนี้ ไม่ว่าจะเป็น admin หรือไม่ ก็สามารถนำ connection นี้ไปเชื่อมต่อฐานข้อมูลได้ทันที           การเชื่อมต่อผ่าน datasource จะเป็นการผลักภาระให้ Application Server เป็นตัวจัดการ ซึ่งเรา (admin) จะต้องตั้งค่ารายละเอียดที่จำเป็นในการเชื่อมต่อฐานข้อมูลเข้าไป ซึ่งทำเพียงครั้งเดียว จากนั้นเขียนโปรแกรมเพื่อทำการ lookup ผ่านชื่อที่ตั้งไว้ โดยในภาพตัวอย่างเป็นการสร้าง datasource บน Wildfly Application Server   *AppServ. ของภาษา Java มีหลายตัว หน้าจออาจแตกต่

[Java] try-with-resouces กับการคืนทรัพยากรบน Java 7

          Java 7 มี syntax ที่เราอาจไม่ได้รู้สึกตัวว่ามันมีอยู่ คราวนี้เราก็จะมาทำความรู้จัก try-with-resources ที่เป็นตัวช่วยสำคัญในการยุ่งกับ resources ต่าง ๆ เช่น การเชื่อมต่อฐานข้อมูล(Database connection) การเขียน-อ่านไฟล์ เป็นต้น           ปกติแล้ว การเขียนโปรแกรมขั้นพื้นฐาน ก็เราได้รู้จักการใช้งาน object ซึ่งก็จะมี lifetime ของตัวมันเองแต่ก่อน การยุ่งกับ resources เราจำเป็นจะต้องเขียนเปิด-ปิดการใช้งานเอง จุดนี้ try-with-resources จะเข้ามาช่วยให้เราเขียนโค้ดง่ายขึ้น การเชื่อมต่อฐานข้อมูลโดยไม่ใช้ try-with-resourcs   ถ้าเขียนตามจินตนาการขั้นแรกสุด เปิดใช้งาน resources อย่าลืมปิดเมื่อใช้เสร็จ Connection con = getConnection(); ... .. . con.close()           แต่ แต่ แต่ !   การเรียกใช้งาน resources ส่วนใหญ่จะพ่วงกันมาหลายตัว และจะบังคับให้เราเขียน try-catch เพื่อจัดการบางอย่างเมื่อเกิดปัญหาขึ้น ซึ่งเราจะต้องตามปิด resources ทั้งเคสที่ทำงานถูกต้องและไม่ถูกต้องของทุกตัว Connection con = null; Statement stm = null; ResultSet rs = null; try { String sql = "SELECT *

Facebook Comment

Recent Posts

Popular post of 7 days

Portal คืออะไรกันนะ???

มาตรฐานการตั้งชื่อตัวแปร (Naming Convention)

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

Popular

[Java] Java 8 DateTime ใหม่ ไฉไลกว่าเดิม

Portal คืออะไรกันนะ???

มาตรฐานการตั้งชื่อตัวแปร (Naming Convention)

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

เรื่องของ ++i กับ i++

ลืมรหัสปลดล็อค Android เข้าเครื่องไม่ได้ มีทางออกครับ

[Java] Java Static Variable และ Static Method

Push Notification คืออะไร มีวิธีทำอย่างไร (No Code)

พิมพ์ซองจากรายชื่อ excel ด้วยวิธี Mail Merge

[Android] เปิดเครื่องไม่ได้ โลโก้ค้าง (Boot Loop)