Sunday, February 11, 2007

Top down Design - -'


เง้ออออ... - -'

Saturday, February 10, 2007

การติดต่อกับ AS400 โดยผ่าน JDBC

การทำงานกับระบบ AS/400 โดยผ่านทาง JDBC จะเหมือนกับการทำงานกับ Database อื่นๆ เพราะว่าบน AS/400 จะมี DB2 Engine อยู่ ซึ่งคำสั่ง SQL โดยส่วนใหญ่ของ DB2 จะใช้กับ AS/400 ได้อยู่แล้ว

ขั้นตอน
  1. ขั้นแรกจะต้องมี JDK ก่อน ตั้งแต่ version 1.4 ขึ้นไป
  2. สามารถ Download JDBC ของ AS/400 ได้จาก http://jt400.sourceforge.net/
  3. เมื่อ download เสร็จแล้วก็ extract file .jar ไปไว้ที่ $JAVA_HOME/jre/lib/ext
  4. ใน AS/400 จะมี Object อยู่หลายๆอย่าง แต่ที่เกี่ยวข้องก็คือ LIBRARY ซึ่งก็เหมือน Folder และ File เหมือน Table เวลาจะอ้างอิง Table บน AS/400 จะต้องอยู่ในรูปแบบ LIBRARY.FILE
  5. ตัวอย่าง Function ที่ใช้ Connection
public Connection getAS400Connection() throws ClassNotFoundException, SQLException{
Connection conn=null;
final String HOST="10.251.1.20";
final String USER="nidex";
final String PASSWORD="nidex";
try{
Class.forName("com.ibm.as400.access.AS400JDBCDriver");
conn=DriverManager.getConnection("jdbc:as400://"+HOST,USER,PASSWORD);
}catch(ClassNotFoundException cex){
cex.printStackTrace();
throw cex;
}catch(SQLException sex){
sex.printStackTrace();
throw sex;
}
return conn;
}

Database Tool ที่ใช้เปิด Connection ไปยัง Database ต่างๆ รวมถึง AS/400
ตัวอย่าง Source Code เต็มๆ

package csi.sample;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;


public class As400Conn {

public static void printColTypes(ResultSetMetaData rsmd)
throws SQLException {
int columns = rsmd.getColumnCount();
for (int i = 1; i <= columns; i++) {
int jdbcType = rsmd.getColumnType(i);
String name = rsmd.getColumnTypeName(i);
System.out.print("Column " + i + " is JDBC type " + jdbcType);
System.out.println(", which the DBMS calls " + name);
}
}
public Connection getAS400Connection()
throws ClassNotFoundException, SQLException{
Connection conn=null;
final String HOST="10.251.1.20";
final String USER="nidex";
final String PASSWORD="nidex";
try{
Class.forName("com.ibm.as400.access.AS400JDBCDriver");
conn=DriverManager.getConnection("jdbc:as400://"+HOST,USER,PASSWORD);
}catch(ClassNotFoundException cex){
cex.printStackTrace();
throw cex;
}catch(SQLException sex){
sex.printStackTrace();
throw sex;
} return conn;
}
public static void main(String[] args) {
try{
As400Conn as400=new As400Conn();
final String LIBRARY="MVXCDTA3";
final String TABLE="MITMAS";
Connection conn=as400.getAS400Connection();
Statement stmt=conn.createStatement();
String query="select * from "+LIBRARY+"."+TABLE;
ResultSet rs = stmt.executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();
printColTypes(rsmd);
System.out.println("");
int numberOfColumns = rsmd.getColumnCount();
for (int i = 1; i <= numberOfColumns; i++) {
if (i > 1) System.out.print(", ");
String columnName = rsmd.getColumnName(i);
System.out.print(columnName);
}
System.out.println("");
while (rs.next()) {
for (int i = 1; i <= numberOfColumns; i++) {
if (i > 1) System.out.print(", ");
String columnValue = rs.getString(i);
System.out.print(columnValue);
}
System.out.println("");
}
}
catch(Exception ex){
ex.printStackTrace();
}
}
}


Monday, January 01, 2007

สวัสดีปีใหม่ 2550

เมื่อวานวันสิิ้นปี อยู่บ้านเล่น Linux กับเขียน Program ไปเรื่อยเปื่อย
แต่ก็มีความคืบหน้าอยู่บ้าง คือได้แก้ปัญหาอยู่สองอย่างคือ
1. เปลี่ยน default sound card ใน ubuntu
sudo asoundconf list #ดู sound card
sudo asoundconf set-default-card Live #เปลี่ยนเป็น Live
2. IceFaces ไม่ยอม render เพราะใน faces-config.xml Default จะใส่ application view ไว้เป็น com.icesoft.faces.facelets.D2DFaceletViewHandler ก็ให้เอาออกแล้วจะ Run ได้