การติดต่อใช้งาน Oracle Database ด้วย JSP (Java Server Page)


หน้าแรก JSP การติดต่อใช้งาน Oracle Database ด้วย JSP (Java Server Page)

บทความนี้เป็นตัวอย่างง่ายๆ ในการใช้ JSP ติดต่อทำงานร่วมกับ Oracle database แนะนำว่า ผู้อ่านควรมีความรู้เบื้องต้นทางด้าน Java programming language และ Java Server Pages (JSPs) ก่อนนะครับ ( แต่ถ้ายังไม่คุ้นเคยเท่าไร แนะนำให้ดู Reference ให้ส่วนท้ายของ เอกสารนี้นะครับ )

การจะให้ Java Program จะสามารถติดต่อกับ Database ได้นั้น เราต้องติดต่อโดยผ่าน Java Database Connectivity (JDBC) API ซึ่งก็หมายความว่า ในบรรทัดแรกของ File JSP ของเรานั้น ควรเป็นดังนี้

<%@ page import="java.sql.*" %>

จากนั้น เราเขียน Code ได้อย่างปกติ

<HTML>
<HEAD><TITLE>Simple JSP/Oracle Query Example</TITLE></HEAD>
<BODY BGCOLOR="#FFFFFF">
<CENTER>
<B>Employees</B>
<BR><BR>

และเราก็สามารถใส่ JSP scriptlet ซึ่งเริ่มต้นด้วยเครื่องหมาย <% และปิดด้วยเครื่องหมาย %> เหมือนการเขียน JSP scriptlet ตามปกติ โดยในส่วนของ scriptlet ที่เราสนใจนี้ จะเป็นการติดต่อทำงานกับ Oracle Database

<%
Connection conn = null;
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@fuju.exzilla.net:1521:fuju","scott","tiger");

จากตัวอย่าง จะเป็นการบอกว่า เราต้องการติดต่อกับ Database Instance ชื่อ fuju ที่ทำงานอยู่บนเครื่อง fuju.exzilla.net โดยผ่าน Port number 1521 และใช้ User ชื่อ scott ในการติดต่อ ซึ่งมี Password เป็น tiger และในการติดต่อนั้น จะใช้ JDBC แบบ thin (ดูรายละเอียด เรื่อง Database User ได้ ที่นี่)

หลังจากได้สร้าง Connection เรียบร้อยแล้ว ก็ถึงเวลาสร้าง Statement และทำการ execute ซึ่ง Statement ก็จะเป็นคำสั่ง SQL ที่ใช้ในการดึงข้อมูล (ดูรายละเอียดการสร้าง Table และการใช้งาน SQL เบื้องต้นได้ ที่นี่)

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM scott.Employees");

ตัวอย่าง Code ในเบื้องต้น ยังอยู่ใน JSP scriptlet อยู่นะครับ จากตัวอย่าง เป็นการดึงข้อมูลในทุกๆ Row ที่อยู่ใน Table Employees ที่อยู่ภายใต้ Schema ของ Scott ออกมา ซึ่งก็จะมี Column ชื่อ EMPID, ENAME, ESURNAME, SALARY, STARTDATE ตามลำดับ

และเมื่อ statement นั้นได้ถูก executed แล้ว เราก็สามารถอ่านค่าจาก Result Set ได้ดังนี้

//Print start of table and column headers
out.println("<TABLE CELLSPACING="0" CELLPADDING="3" BORDER="1">");
out.println("<TR><TH>ID</TH><TH>Name</TH><TH>SURNAME</TH>");
out.println("<TH>SALARY</TH><TH>STARTDATE</TH></TR>");
//Loop through results of query.

while(rs.next())

{
out.println("<TR>");
out.println(" <TD>" + rs.getString("EMPID") + "</TD>");
out.println(" <TD>" + rs.getString("ENAME") + "</TD>");
out.println(" <TD>" + rs.getString("ESURNAME") + "</TD>");
out.println(" <TD>" + rs.getInt("SALARY") + "</TD>");
out.println(" <TD>" + rs.getString("STARTDATE") + "</TD>");
out.println("</TR>");
}
out.println("</TABLE>");
}

จากตัวอย่าง เราได้ใช้ rs.getString ในกรณีที่ข้อมูลเป็น varchar2 และ rs.getInt ในกรณีที่ข้อมูลเป็น NUMBER โดย Parameter ที่ใส่ให้กับ rs.getString หรือ rs.getInt จะเป็น ชื่อ Column ของ Table ที่เราเรียกใช้

ในการเขียน Progam ที่ดี เราก็ควรจะมีการดัก errors ที่อาจจะเกิดขึ้นด้วย ( handle errors ) เพื่อให้ Program ของเรามีความน่าเชื่อถือในการทำงาน ลักษณะตัวอย่างการดัก errors ก็จะเป็นดังนี้

catch(SQLException e)
{
out.println("SQLException: " + e.getMessage() + "<BR>");
while((e = e.getNextException()) != null)
out.println(e.getMessage() + "<BR>");
}
catch(ClassNotFoundException e)
{
out.println("ClassNotFoundException: " + e.getMessage() + "<BR>");
}

ในส่วนสุดท้ายของ Program เราก็ควรมีการปิด Connection ที่เราได้สร้างไว้ด้วย

finally
{
//Clean up resources, close the connection.
if(conn != null)
{
try
{
conn.close();
}

catch (Exception ignored) {}

}
}

%>

และก่อนจบ JSP code ก็จะเป็นส่วนปิดของ html

</CENTER>
</BODY>
</HTML>

ตัวอย่าง Source Code ที่สมบรูณ์ กดที่นี่

ข้อมูลเพิ่มเติม

Recommended Website

Magazine and Online Learning

e-books

Books ( You can download Oracle books from http://technet.oracle.com)

    • Oracle Concepts, 1999, Oracle Corporation.
    • SQL*PLUS user's Guide and Reference, 1999, Oracle Corporation
    • Oracle SQL*Plus: The Definitive Guide - A good reference for learning how to use SQL*Plus. http://www.oreilly.com/catalog/orsqplus/

See Also:

refer : http://www.exzilla.net/docs/howto/HowtoOracleJSP01.php


ขึ้นไปด้านบน