บทความ

กำลังแสดงโพสต์จาก 2012

ตัวอย่าง Java Script Submit แบบไม่ต้อง Reload อย่างง่าย

บทความเกี่ยวกับ : ตัวอย่าง Java Script Submit แบบไม่ต้อง Reload อย่างง่าย วิธีเขียน Script Submit แบบไม่ต้อง Reload page อย่างง่าย โดยใช้ Frame เข้ามาช่วยครับ วิธีการมีอยู่ 2 ขึ้นตอนคือ 1. สร้าง Frame แล้วซ่อนไว้เช่น <iframe name="pframe" id="pframe" src="" style="display-none"></iframe> 2. เวลา Submit form ให้ Submit ลง Frame โดยการ Set target ไปที่ frame ID เช่น  document.myform.action="child.php";  document.myform.target="pframe";  document.myform.submit();  หรือจะใส่ไว้ที่ TAG Form เลยก็ได้เช่น  <form name="myform" action="child.php" target="pframe">  เพียงเท่านี้เวลาที่ Submit form หน้าจอหลักจะไม่กระดิกเลยครับการทำงาน  จะส่งไปที่ form ตามที่เรา action ไปคือหน้า child.php 3. หากต้องการจะให้มี message อะไรที่หน้าหลัก ก็สามารถให้หน้า child.php เรียกใช้ Javascript ที่หน้า แม่ได้ด้วยคำสั่ง   window.parent.xxxx  เช่น ที่หน้าหลักเรามี function  test()

เขียน Codeigniter แนะนำให้ใช้ site_url เพื่อแก้ปัญหาเรื่อง Path

คำถามเกี่ยวกับ :เขียน Codeigniter แนะนำให้ใช้ site_url เพื่อแก้ปัญหาเรื่อง Path      การเขียน Web Programming หนีไม่พ้นเรื่องของ HTML กับการใช้งานไฟล์ประกอบไม่ว่าจะเป็น javascript ,css  , รูปภาพต่างๆ หรือ การ include , import  PHP ด้วยกัน อะไรเหล่านี้ย่อมจะต้องอ้างอิงด้วย Path และ ชื่อไฟล์  แต่ก่อนถ้าเราเขียนดวย PHP ปรกติ ก็เรียกใช้ได้เลยดูเอาว่ายึดตามไฟล์ PHP ที่จะใช้เป็นหลักถ้าอยู่ใน Sub เดียวกันก็ใช้ได้เลย แต่ถ้าอยู่ซ้อนเข้าไปใน folder ก็ว่ากันไปตามเรื่อง ซึ่งเหล่านี้หลายท่านคงจะพอรู้กันดี      แต่พอหันมาใช้ Framework มันก็เหมือนเป็นดาบสองคมเรื่องที่ยากๆ ช่วยให้เราง่ายขึ้นแต่บางทีเรื่องที่เราเคยทำง่ายๆ แต่ถ้าไม่รู้วิธีใช้ใน framework ก็จะกลายเป็นเรื่องยากทันที       ยกตัวอย่าง เรื่องการ แทรกรูปลงใน HTML เรื่องหมูๆสำหรับทุกคน แต่พอมาใช้ Framework มัน Mapping ผ่าน View ผ่าน controller ที่บางที แค่ เครื่องหมาย  / ตัวเดียวทำให้ Path ไฟล์หาไม่เจอ ทางแก้ไม่ยากสำกรับ Codeigniter เพียงแค่หมั่นใช้ function site_url()   ยกตัวอย่างเช่น จากที่เราเคย เรียกง่าย ๆ  <img src="

วิธี Get Value จาก Raido Button ด้วย Java Script

วิธี Get Value จาก Raido Button ด้วย Java Script คำถามเกี่ยวกับ :วิธี Get Value จาก Raido Button ด้วย Java Script  Input box ที่เป็น radio button นั้นจะถูกมองเป็น Array ใน JavScript ทำให้เราไม่สามารถ  Get Value ได้ง่ายๆ เหมือน input  ตัวอื่น ที่เพียงแค่ ใช้คำสั่ง  vInput.value Radio Button จะต้องใช้ วิธี วน Loop Array  แล้วดูว่า Radio ตัวใหนที่ ถูก Checked ไว้ค่อย Get Value ออกมา ตามตัวอย่าง ตัวอย่างการ Get Value จาก Radio Button <script>     function testRadio(){          radio_val= getRadioValue(document.myform.my_radio_input);          alert(val);      }     function getRadioValue(radioObj) {         for(var i = 0; i < radioObj.length; i++) {             if(radioObj[i].checked) {                 return radioObj[i].value;             }         }         return "";     }      </script> ลองเอาไปปรับใช้ดูครับผม

วิธี Submit form แล้วให้ เปิด หน้าต่างใหม่ New Pop Up

คำถามเกี่ยวกับ :วิธี Submit form แล้วให้ เปิด หน้าต่างใหม่ New Pop Up วิธี Submit form แล้วให้ เปิด หน้าต่างใหม่ด้วย Java Script ครับ บ่อยครั้งที่เรา จะ Open Pop up window มักจะใช้  Link แล้วแปะ Parameter ไป แต่ถ้าเกิดว่าเรามีค่าใน form เยอะๆ มานั่งแปะก็คงไม่ไหวครับ วันนี้จะแนะนำวิธีการ Submit form ที่เป็น method="post" แล้วให้ หน้าที่เรา Action ไป Open popup ใหม่ครับ ตามตัวอย่างนี้เลย ก่อนอื่นเขียน Function javascript ตามนี้ <SCRIPT TYPE="text/javascript"> <!-- function submitpopup(myform){ window.open('', 'test popup', 'height=200,width=400,scrollbars=yes'); myform.target='test popup'; return true; } //--> </SCRIPT> ส่วนของ HTML Form ก็เรียกใช้ง่ายๆ แค่นี้ครับ <FORM METHOD=POST ACTION="test.html"  onSubmit="submitpopup(this)"> ลองไปใช้กันดูครับผม

ตัวอย่าง Java List Value จาก Select Box

คำถามเกี่ยวกับ :ตัวอย่าง Java List Value จาก Select Box โพสก่อนหน้านี้ กล่าวถึงเรื่องการกำหนดความกว้างให้กับ Select Box มาโพสนี้ขอกล่าวต่อเกี่ยวกับเรื่องการ List ค่าใน Select Box ด้วย Request ใน Java เราอาจคุ้นเคยการใช้งาน request.getParameter("p_name") เพื่อรับค่าที่ส่งผ่านจาก form มาให้ ตามชื่อ input box ที่ตั้งไว้   แต่ถ้าเกิดว่าเราอยากจะ List ทุกค่าที่อยู่ใน Select Box ล่ะ จะทำยังไง ยกตัวอย่างเรามี Select Box อยู่ประมาณนี้ Option 1 Option 2 Option 3 Option 4 Option 5 ตาม Code HTML <select multiple="multiple" name="select1" size="5">                 <option>Option 1</option>                 <option>Option 2</option>                 <option>Option 3</option>                 <option>Option 4</option>                 <option>Option 5</option>            </select>

Select Box Width วิธีกำหนดความกว้างให้ Select Box

คำถามเกี่ยวกับ :Select Box Width วิธีกำหนดความกว้างให้ Select Box พอดีมีน้องคนนึงมีปัญหาว่า Select box มันกว้างยาวตาม Data มันจะกว้างตาม Data ที่กว้างที่สุดในนั้น แล้วถ้าเกิดว่าเราไม่อยากให้เป็นอย่างงั้น จะทำยังไง แบบว่าอยากจะกำหนดความกว้างได้เอง ตอนแรกผมก็ตอบไปแบบไม่คิดอะไร ก็ใส่ tab Width เข้าไปสิ เช่น <select  width="10">  อะไรทำนองนี้น่ะ แต่ผลปรากฏว่าทำแล้วไม่มีผลอะไรแฮะ เรื่องที่คิดว่า่ง่ายๆ กลายเป็นไม่ง่ายซะแล้ว นั่งเทียนซักพักก็รู้ว่าถ้าเราจะ กำหนด ความกว้างให้ Select Box ต้องใช้ CSS เท่านั้น T_T ง่ายๆ ก็ตามนี้เลย <SELECT NAME="select1" SIZE="5" MULTIPLE style="width: 200px"> ต้องทำประมาณนี้แหละครับ หรือจะกำหนด CSS ไว้ก่อนก็ได้เช่น <style type="text/css"> .box { width: 200px; height: 200px;} </style> แล้วก็ค่อยเรียกใช้แบบนี้ก็ได้ผลเหมือนกัน <SELECT NAME="select1" SIZE="5" MULTIPLE class="box"> อืมห์นะจะว่าไปไม่บอกก็ไม่รู้เหมือนกันนะเนี่ย

สร้าง กราฟบนเว็บง่ายๆ ด้วย Google API

คำถามเกี่ยวกับ :สร้าง กราฟบนเว็บง่ายๆ ด้วย Google API พอดีไปรับงานมางานนึงมีให้ทำกราฟด้วย ตอนแรก็กลัวๆ ว่าจะช้าก็เพราะกราฟนี่แหละ แต่มาึค้นเจอพอดีเห็นแล้วง่ายมากครับ เพียงแค่ทำ HTML ง่ายๆ ตามนี้เลย เริ่มจาก import  API Google มาครับ <script type="text/javascript" src="https://www.google.com/jsapi"></script> จากนั้นก็ เขียน Script  ตามตัวอย่างใน URL นี้เลยครับ https://google-developers.appspot.com/chart/interactive/docs/quick_start ทำตามนั้นแล้ว เปิด HTML ด้วย Browser ก็จะได้กราฟออกมาเลยครับ ตาม Link ข้างบนเราสามารถดึงข้อมูลจาก Data base มาแทนที่ค่าที่กำหนดใน java script ส่วนนี้ครับ  var data = new google.visualization.DataTable();         data.addColumn('string', 'Topping');         data.addColumn('number', 'Slices');         data.addRows([           ['Mushrooms', 3],           ['Onions', 1],           ['Olives', 1],           ['Zucchini', 1],           ['Pepperoni&#

ทำ TAB ง่ายๆ ดัวย jQuery UI ครับ

คำถามเกี่ยวกับ :ทำ TAB ง่ายๆ ดัวย jQuery UI ครับ พอดีวันนี้มีงาน ที่ต้อง Design เป็น Tab ก็เลยลองโหลด Jquery มาลองเล่นดูครับ ง่ายๆ ครับ หลังจาก โหลดมาแล้วก็ เขียน HTML ตามนี้เลย ส่วนของการ include Library & CSS ตามนี้เลยครับ     <link rel="stylesheet" href="js/themes/base/jquery.ui.all.css">     <script src="js/jquery-1.7.2.js"></script>     <script src="js/ui/jquery.ui.core.js"></script>     <script src="js/ui/jquery.ui.widget.js"></script>     <script src="js/ui/jquery.ui.tabs.js"></script>         <script>     $(function() {         $( "#tabs" ).tabs();     });     </script> เสร็จแล้วก็สร้าง TAB ได้ด้วย HTML Code ง่ายๆ สะอาดตา <div id="tabs">     <ul>         <li><a href="#tabs-1">TAB1</a></li>         <li><a href="#tabs-2">TAB2</a></li>   

Oracle PRAGMA AUTONOMOUS_TRANSACTION เขียน PL ให้เป็นอิสระจาก Main Transaction

บทความเกี่ยวกับ : Oracle PRAGMA AUTONOMOUS_TRANSACTION เขียน PL ให้เป็นอิสระจาก Main Transaction วันนี้มีปัญหาเรื่อง Store procedure ที่เขียนไว้ commit ไม่ได้ทั้งที่นานทีปีหนไม่เคยเป็น อยู่ดีๆ เจอ Error ตัวนี้ : ORA-02089: COMMIT is not allowed in a subordinate session เท่าที่ลองหาข้อมูลดูน่าจะเกิดจาก App ที่ Call (ตอนนี้เป็น Spring +Hibernate) มี Transaction Main ครอบอยู่ ประมาณนี้  Begin    - Call PL ที่มี Being commit อยู่ข้างใน     -Do some thing     -Do some thing     -Do some thing Commit ทำให้เกิด Error เพราะ PL พยายามจะไป Commit ซ้อนใน Main Transaction อีกที เคสนี้บังเิอิญว่างานที่ผมทำก็ไม่ได้ต้องการให้ Logic ใน PL ไปรวมอยู่ใน Transaction นั้นๆ อยู่แล้ว ทางแก้แบบง่ายๆ ที่สุดก็คือ เอา บรรทัดที่ Call PL ออกมาไว้นอก Transaction Block ซะตามนี้  - Call PL ที่มี Being commit อยู่ข้างใน  Begin       -Do some thing     -Do some thing     -Do some thing Commit ฟังดูแล้วเหมือนจะไม่ยากแต่ทางฟากน้องที่เขียน Java บอกมาว่าไม่รู้จะไปแก้ที่จุดใหน T_T

PHP Date time ตัวอย่างการสร้างตัวแปร Date time และการนำไปใช้

บทความเกี่ยวกับ : PHP Date time ตัวอย่างการสร้างตัวแปร Date time และการนำไปใช้ วันนี้จะนำเสนอตัวอย่างการใช้งาน Date time ใน PHP ครับ โจทย์มีอยู่ว่าผมต้องการ get วันที่และเวลาปัจจุบันเอามา save ลง data base $create_date=date("Y-m-d H:i:s"); ตามนี้เลยครับ เวลาเอาไปใช้ เช่นใน SQL command ถ้าเป็น MySQL ก็เอาไปใช้ได้เลยเช่น insert into mytable (code_id ,create_dtm) value(0,$create_date) ประมาณนี้แหละครับ

อาการ ค้าง เพราะลืม close session hibernate

บทความเกี่ยวกับ : อาการ ค้าง เพราะลืม close session hibernate เรื่องแบบนี้เป็นเรื่องที่รู้ๆ กัน แต่บ่อยครั้งก็เกิดขึ้นโดยไม่ทันระวัง ถ้าลืมแบบตัวเป้งๆ เรียกได้ว่า call 4-5 ทีแล้วค้างนี่ก็ยังดีเพราะจะได้ไหวตัวทัน รีบเข้าไปจัดการ close พวก session หรือ connection ได้ทัน แต่บางทีก็ลืมจุดเล็กๆ น้อยๆ ที่ไม่เห็นผลทันตาแบบว่า On production ไปหลายวันแล้วถึงรู้ตัว ถึงขั้นงานเข้าเลยทีเดียวถ้าพอทำเนาก็ restart server แต่ถ้าไม่ไหวคงต้องแก้แล้ว deploy ใหม่ แบบว่าเป็นข่าวกันเลยทีเดียว หุหุ Code ประกอบขำๆ แบบให้เห็นภาพไม่ได้จริง จังอะไร } finally {             if(detailSet != null){                 detailSet.close();             }             if(cs != null){                 cs.close();             }             if(connect != null){                 connect.close();             }             if (session != null) {                 try {                                        session.close();                 } catch (HibernateException e) {                     throw e;            

Eclipse Out of Memory แล้วปิดไปเอง แก้ปัญหายังไง

บทความเกี่ยวกับ : Eclipse Out of Memory แล้วปิดไปเอง แก้ปัญหายังไง วันนี้พอดีมีน้องมาใหม่ ได้ Set up เครื่องให้เป็น Windows 7 กับ Jdk 1.6 พร้อมกับ Eclipse Version เก่าๆหน่อย เอาให้น้องลองใช้งานดู ใช้งานไปซักพักพบว่า Eclipse ปิดไปเอง ด้วยอาการแปลกๆบางครั้งก็ปิดไปแบบหายวับไปกับตา  บางครั้งก็มีข้อความเตือนว่า Out of memory T_T ผมเดาว่าน่าจะ Memory ที่ Share ให้ Eclipse ใช้ไม่เพียงพอวันนี้เลยจะมานำเสนอวิธี กำหนดค่า Memory ให้กับตัว Eclipse ตามนี้เลยครับ แก้ที่ไฟล์ eclipse.ini    โดยปรับแก้ที่ Parameter ตามนี้ครับ   -Xms128m   -Xmx512m   -XX:MaxPermSize=256m ค่า Memory ก็ปรับให้เหมาะสมตามปริมาณ Memory ที่ได้มานะครับ

Spring Framework กับการใช้งาน config file ด้วย PropertyPlaceholderConfigurer

บทความเกี่ยวกับ : Spring Framework กับการใช้งาน config file ด้วย PropertyPlaceholderConfigurer บางงานผมจำเป็นต้องมีการเก็บค่าบางอย่างลงใน Properties file เพื่อเป็น Configuration ไว้ใช้งานในระบบ วิธีการของผมคือ ผมจะวางไฟล์ นี้ไว้ใน Class Path หรือ หัอง SRC จากนั้นทำกาน Load file นี้ขึ้นมาใช้ได้ด้วย PropertyPlaceholderConfigurer  ตามตัวอย่าง     <!-- Spring properties file config -->     <bean name="propertyPlaceholder"         class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">         <property name="locations">             <list>                 <value>classpath*:db.properties</value>             </list>         </property>     </bean> จากตัวอย่าง ผมมีไฟล์ชื่อว่า db.properties วางไว้ใน class path สาเหตุที่วางไว้ในนี้เพราะจะได้ไม่ต้องระบุ Path ให้ยุ่งยากจากนั้นเวลาใช้ก็แค่เรียกใช้งานตาม tag ดังนี้     <bean id="dataSource"           class=&qu

Java Date Format จัดรูปแบบวันที่ด้วย SimpleDateFormat

บทความเกี่ยวกับ : Java Date Format จัดรูปแบบวันที่ด้วย SimpleDateFormat วันนี้จะมานำเสนอวิธีการจัด Format Date ด้วยรูปแบบต่างๆ ผ่าน Class ที่มีชื่อว่า java.text.SimpleDateFormat มาดูตัวอย่างกันเลยครับ         Date date=new Date();         System.out.println("No format :"+date);         java.text.SimpleDateFormat df= new java.text.SimpleDateFormat();         System.out.println("No pattern format :"+df.format(date));         df.applyPattern("dd/mm/yyyy");         System.out.println("dd/mm/yyyy format :"+df.format(date));         df.applyPattern("dd/mm/yyyy HH:mm:ss");         System.out.println("dd/mm/yyyy HH:mm:ss format :"+df.format(date)); จากตัวอย่างข้างต้นผลการ Run ออกมาได้ตามนี้ No format :Thu Apr 05 16:29:18 ICT 2012 No pattern format :5/4/2555, 16:29 น. dd/mm/yyyy format :05/29/2555 dd/mm/yyyy HH:mm:ss format :05/29/2555 16:29:18 ลองนำไปประยุกต์ใช้งานได้ครับ ไม่ยากๆ

PL SQL Array การประกาศตัวแปร Array และวิธีการใช้งานใน PLSQL

บทความเกี่ยวกับ : PL SQL Array การประกาศตัวแปร Array และวิธีการใช้งานใน PLSQL วันนี้มีตัวอย่างการใช้ งาน Array ใน PLSQL มาฝากครับ การประกาศและรียกใช้งาน ก็จะคล้ายๆ ภาษาโปรแกรมมิ่ง ทั่วไป เริ่มจากการ กำหนด Data Type TYPE t_array IS VARRAY(10) OF VARCHAR2(20); กำหนด datatype  Array ของ varchar2(20)  จำนวน  10 ช่อง อันนี้ก็เหมือนกับ Array ของที่อื่นๆ ที่ต้องกำหนดจำนวนช่องไว้ให้ชัดเจนแต่แรก T_T ต่อมาก็ำกหนดตัวแปรง่ายๆ v_array := t_array ('1','2','3','4','5'); เวลาเรียกใช้ ก็ ง่ายๆ แบบนี้ครับ v_array(1)   หมายถึง array ช่องที่ 1 มาดูตัวอย่างการใช้งานแบบเต็มๆ กันเลยครับ DECLARE   TYPE t_array IS VARRAY(10) OF VARCHAR2(20);   v_array := t_array ('1','2','3','4','5'); BEGIN    for i in 1 .. v_array.count loop       DBMS_OUTPUT.PUT_LINE('array val is '||v_array(i));    end loop; END;

PL SQL Fetch Cursor วิธีวน Loop ข้อมูลออกจาก Cursor ใน PL SQL

บทความเกี่ยวกับ : PL SQL Fetch Cursor วิธีวน Loop ข้อมูลออกจาก Cursor ใน PL SQL วันนี้จะนำเสนอ การ Query ข้อมูลใน SQL Script ของ Oracle แล้วแล้วทำการ Fetch data ออกมา ด้วยการวน Loop  ตามตัวอย่างเลยครับ DECLARE TYPE cur is REF CURSOR; myCursor cur; out_rec my_tbl%rowtype; BEGIN     open myCursor for select * from my_tbl;     LOOP FETCH myCursor into out_rec;     EXIT WHEN myCursor%NOTFOUND;       DBMS_OUTPUT.PUT_LINE('example data '||out_rec.my_field);     END LOOP;     CLOSE myCursor; EXCEPTION   WHEN OTHERS THEN   DBMS_OUTPUT.PUT_LINE('ERROR >>  '|| SQLERRM); END; ตัวอย่างการ Query แล้ววน Loop แบบเรียบง่ายครับ ลองเอาไปใช้กันดูครับ

Java read file การเขียน Java เพื่อ อ่านไฟล์ในแบบต่างๆ

บทความเกี่ยวกับ : Java read file การเขียน Java เพื่อ อ่านไฟล์ในแบบต่างๆ การเขียนโปรแกรม Java เพื่อ อ่านไฟล์นั้น ถือว่าเป็นเรื่องที่ค่อนข้่างจะต้องถ่ายข้อมูลหลายขั้นตอนพอสมควร  เดี๋ยวจะยกตัวอย่างการ เขียนโปรแกรมเพื่อ อ่านไฟล์ .txt แบบสั้นๆ ง่ายๆ ให้ดูนะครับ import java.io.*; class ReadFileExample {  public static void main(String args[])   {   try{  // อ่านไฟล์ ใส่ path ให้ถูกต้องนะครับ ระบุ path เต็มไปเลยก็ได้   FileInputStream is = new FileInputStream("file.txt");   DataInputStream ds = new DataInputStream(is);   BufferedReader br = new BufferedReader(new InputStreamReader(ds)); //ทำสาม step นี้ให้เสร็จครับจนได้ BufferedReader แล้วก็เอามาวน Loop ออกได้เลย   String strLine;   while ((strLine = br.readLine()) != null)   {       System.out.println (strLine);   }   ds.close();     }catch (Exception e){   e.getMessage();   }   } } ขั้นตอน ผมจะท่องไว้เลยครับ Step ตามนี้ เกี่ยวกับพวก InputStream ก็คือ   - FileInputStream อ่านไฟล์จาก Path   - DataInputStream

Java Shorthand เช็ค if else แบบกระชับ ได้เรื่อง

บทความเกี่ยวกับ : Java Shorthand เช็ค if else แบบกระชับ ได้เรื่อง เพื่อนๆ คงจะคุ้นเคยกับการเช็คเงื่อนไข if else ด้วย statement แบบ classic แบบนี้ if(expression) {    // do some thing    // do some thing }else{   // do some thing   // do some thing } จาก Code แบบ classic จะเห็นว่ามันค่อนข้างจะยาวแบบนี้จะเหมาะกับการทำงานใน if ที่หลายๆ คำสั่ง ประมาณว่า if(expression) {    // do some thing    // do some thing    // do some thing   // do some thing }else{   // do some thing   // do some thing   // do some thing } แต่ถ้าเกิดเราต้องการทำเพียงแค่นี้ if(expression) {    // do some thing }else{   // do some thing } แบบว่า do some thing แค่ statement เดียว ผมขอแนะนำให้รู้จัก Java Shorthand กับ statement สั้นๆ ง่ายๆ ได้เรื่อง......... แบบนี้ เงื่อนไข ? ถ้าเป็นจริงทำตรงนี้ : ถ้าไม่จริงทำตรงนี้ (expression) ? (true action) : (false action) เห็นแบบนี้บางท่านอาจนึกภาพไม่ออกมาดูตัวอย่างเลยกะกัน เช่นใน JSP <% if(a==b)out.pr

java.lang.UnsupportedClassVersionError: Bad version number in .class file Error ตัวนี้เล่นเอาซะงง

บทความเกี่ยวกับ : java.lang.UnsupportedClassVersionError: Bad version number in .class file Error ตัวนี้เล่นเอาซะงง java.lang.UnsupportedClassVersionError: Bad version number in .class file Error ตัวนี้เล่นเอาซะงง วันนี้อยู่ๆ ก็งานเข้าซะงั้นเมื่อโปรแกรมที่ Run ได้มาตลอดอยู่ๆ ก็มีปัญหา เหตุเกิดเนื่องจากว่ามี Lib ที่ Export มาจาก JDK ต่าง Version กันแค่นั้นเอง สุดยอด ไม่น่าเชื่อว่ามันจะส่งผลได้ขนาดนี้ Server ใช้ jdk version 1.5  แต่มี jar บางตัวที่น้อง export ออกมาจากเครื่อง dev ที่เป็น jdk version สูงกว่า ผลที่ได้ก็เจอ error ดังกล่าวข้างต้นแหละครับ ทางแก้ยังไม่ได้ดูละเอียดแต่ตอนนี้แก้ปัญหาเฉพาะหน้าด้วยการ export jar ใหม่ด้วย jdk 1.5 ก็ถือว่าโอเคครับ ผมคุ้นๆว่าตอน export jar หรือตอน compile น่าจะมี set ได้ว่าจะให้ target ออกไปเป็น version อะไร เดี๋ยวจะลองให้ดูอีกทีนะคร้าบ

Java Call PLSQL Oracle Function และ Store procedure

บทความเกี่ยวกับ : Java Call PLSQL Oracle Function และ Store procedure ตัวอย่างการเขียนโปรแกรมด้วยภาษา Java เพื่อเรียกใช้งาน PLSQL นั้นแตกต่างจากการเขียนเพื่อ Execute SQL statement ธรรมดาอยูนิดหน่อยตามตัวอย่างครับ CallableStatement call=null; ResultSet rs=null; try {                                    call = con.prepareCall("{call TEST_PACK.TEST_PROC(?,?,?) }");             call.registerOutParameter(1, oracle.jdbc.driver.OracleTypes.CURSOR);             call.setString(2,"10001");             call.setString(3,"TEST");                        call.execute();             rs=(ResultSet)call.getResultSet();                        while(rs.next()){                            System.out.println(rs.getString(3));                            }         } catch (Exception e) {             e.printStackTrace(); } ตามตัวอย่างเลยครับ แต่ถ้าเป็น Function จะเขียนอีกแบบเพราะว่า function จะไม่มี parameter out แต่จะสั่ง return ออกมา เราต้อง Ca

Oracle PLSQL Procedure ต่างกับ Function ยังไง

บทความเกี่ยวกับ : Oracle PLSQL Procedure ต่างกับ Function ยังไง เพื่อนๆ หลายๆคนคงจะเคยเขียน Program บน Oracle ด้วย PLSQL กันมาบ้าง PLSQL ต่างจาก SQL commmand ตรงที่สามารถใน่ Logic ต่างๆเข้าไปได้มากกว่าไม่ว่าจะเป็น การเช็คเงื่อนไข การ วน Loop เป็นต้น แต่หลายคนอาจสงสัยว่า Procedure ต่างจาก Function ยังไง ผมเองตอนหัดเขียนใหม่ๆ ก็ใช้แต่ Function เพราะคุ้นเคยกับการเขียน Java ที่เป็น method มี input parameter และก็มี return value แต่พอเริ่มเขียนเยอะขึ้นจึงได้เปลี่ยนมาใช้ Procedure แทน ผมจะบอกข้อแตกต่างที่เห็นได้ชัดเจนที่สุดและเป็นประโชยน์ที่สุดให้ฟังเพียงข้อเดียวนะครับคือ   ** Parameter ของ procedure มีได้ทั้ง In และ Out นั่นหมายความว่าคุณสามารถส่งค่าเข้า procedure ได้หลายค่าและก็ return ค่ากลับออกมาได้หลายค่าเช่นกัน สุดยอดดด แต่ ในส่วนของ function นั้นสามารถรับ parameter ได้หลายค่าก็จริงแต่ return ค่ากลับออกมาได้เพียงค่าเดียวเหมือนที่เราคุ้นเคยกัน

การใช้งาน Index ใน Oracle และเทคนิคการใช้ HINT

บทความเกี่ยวกับ : การใช้งาน Index ใน Oracle และเทคนิคการใช้ HINT วันนี้นั่งทำ Query อยู่พบข้อสังเกตุอะไรบางอย่าง กับการสร้าง index ใน Oracle ด้วยความที่เราไม่ได้มีความรู้มากมายเท่าทางสาย DBA แต่ก็ได้อาศัยลองผิดลองถูกเรื่อยๆมา วันนี้จะมาเล่ากรณีศึกษาให้ฟัง  ยกตัวอย่าง ผมสร้าง index  ให้กับ table ผมไว้ สอง Field คือ  field_a   index ชือ indx_a field_b   index ชื่อ indx_b ลอง Query data ดูพบว่า select * from my_table where field_a='xxx'; ผลที่ได้เร็วมากๆ select * from my_table where field_b='xxx'; ผลที่ได้เร็วมากๆ แต่พอลองแบบนี้ select * from my_table where field_a='xxx' and field_b='yyy'; ผลที่ได้ปรากฏว่าหน่วงขึ้นอย่างเห็นได้ชัดเจน ผมก็งงว่าทำไปเป็นอย่างงั้นในเมื่อเราก็ Query ด้วย index ทั้งสอง Field ลองถามเพื่อๆ ที่เก่งด้านนี้ดู เค้าบอกว่าให้สร้าง index สอง Field นี้ต่อกันเป็นแบบนี้ create index indx_ab on my_table (field_a,field_b) ลองสร้างและลอง Query แบบเดิมดูพบว่าเร็วจริงตามที่คาดไว้    แต่ผมเองก็ไม่เข้าใจว่าจะไปส

Hibernate Session บน Weblogic กับ Tomcat มันต่างกันยังไง

บทความเกี่ยวกับ : Hibernate Session บน Weblogic กับ Tomcat มันต่างกันยังไง งานเข้าเต็มๆ ไม่รู้ว่าผมพลาดอะไรกับความรู้เท่าไม่ถึงการณ์ ไม่รู้อารมณ์ใหนอยู่ๆ ก็รื้องาน Project เก่าๆ มา Tuning เล่น พอดีงานที่ทำ Dev บน Tomcat  ส่วน Production เป็น Web Logic ลอง Run บน Dev อัดยิงเข้าไปหนักๆ ผลปรากฏว่าเดี้ยง ก็แปลกใจ ว่ามัน On Production ไปตั้งนานไม่เคยเห็นมันจะเป็นอะไร เลยตัดสินใจมาไล่ code ดูบน Dev พบว่าก็ Close Session ทุกครั้ง ก็ไม่น่าจะผิดอะไร แล้วทำไมมันถึงเดี้ยงได้ ก็เลยลองนั่งไล่ Close  statement , resultset ด้วยเผื่อมันจะเกี่ยว ผลปรากฏว่า หายครับแบ งงๆ หุหุ ว่าแล้วก็ deploy ซะ เท่านั้นแหละ บน Prod เดี้ยงทันทีไล่อยู่นานจึงรู้ว่า เพราะ การ close statement ทำให้ result set ถูก close ไปด้วย T_T ... แต่บน tocat ไม่เป็น 555+ งานเข้าสิครับ สุดท้ายสรุปได้ว่า - ที่บน Prod Weblogic มันไม่เดี้ยง เพราะ การ close Session มันจะ Close resource ทั้งหมด มันก็ดีตรงปลอดภัยดี แต่ถ้าเราเผลอไป Close ก่อนแล้วเอา result set ไปใช้ทีหลังก็จะเดี้ยงแบบนีแ้หละ - บน Dev Tomcat  Clos

สวัสดีปีใหม่ี 2012 ครับผม

วันนี้ไม่มีอะไรมาฝากครับ นอจากจะมาอวยพรปีใหม่ ให้ทุกๆท่านจงพบแต่ความสุขความเจริญ ทั้งในชีวิตครอบครัว และหน้าที่การงาน ตลอดปีใหม่ 2555 ครับผม