Saturday, September 6, 2008

How to get the number of rows of ResultSet object?

4.1.08 by Kurei Kain

It's very strange that we don't have any direct way to get the number of rows of a ResultSet object!

It is strange that there is no direct way to get the amount number of rows of records, when you programming with Java and MySql. For example, now I get one result from one Sql quering, I can use this way to get the number of records:

.............................
Connection con = DriverManager.getConnection(url, username, password);
Statement stmt = this.con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM testtable");
int count = 0;
while(rs.next()) {
count++;
}
System.out.println("The number of records are " + count)

But this seems not be one smart idea, because it will read through all the records rows, but you just need the amount number. And I found one better way to do that.

rs.last();
int count= rs.getRow();

This way will jump to the last record and get the current row number. What ever you use which method, if you want to use the ResultSet again, DO NOT forget to use beforeFirst() before you use it -- it will jump back to the position before the first record. Notice that first() method will just jump to the position of the first record. For example, if you have only one record, run the code below, the count will be zero, because rs.next() has no record:

rs.first(); //has 1 record
while(rs.next()) {
count++;// will be 0
}

This code is right, it will avoid that you missed the first record when you go on process with the records:

rs.beforeFirst(); //has 1 record
while(rs.next()) {
count++;// will be 1
}

So the right code here:
.............................
Connection con = DriverManager.getConnection(url, username, password);
Statement stmt = this.con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM testtable");
rs.last();
int count= rs.getRow();
rs.beforeFirst();
//do something with rs
................................

How to get the columns number in one row?? Here is one good example:

ResultSet rs = stmt.executeQuery("select version();");
int columns = rs.getMetaData().getColumnCount();
String version = "";
while (rs.next()) {
for (int i = 1; i <= columns; i++) {
String tem = rs.getString(i);
if(!tem.trim().equalsIgnoreCase(""))
version = version + "." + tem;
}
}
CommonModel.debug("MySQL database current version is: "+ version);

getMetaData().getColumnCount() will do that job. Clear??

Get Column Count using ResultSet in SQL


import java.sql.*;
public class GetColumnCount {
public static void main(String[] args) throws Exception {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/";
String username = "vineej";
String password = "vineej";
String dbName= "no";
Class.forName(driver);
Connection conn = DriverManager.getConnection(url+dbName, username, password);
System.out.println("Connected");
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM Student");
ResultSetMetaData rsmd = rs.getMetaData();
int NumOfCol=rsmd.getColumnCount();
System.out.println("Number of Columns="+NumOfCol);
st.close();
conn.close();
}
}

Saturday, August 23, 2008

Install PostGis in Vista

I recently upgraded to Windows Vista /  IIS7, and found very little
help on the internet regarding installing PostgreSQL / PostGIS, most
'help' consists of useless trolls and flame wars. Seems the open
source community would rather fight each other than try to play nice
with the new Microsoft OS platform.

The standard win32 installer of PostgreSQL fails on its own. There are
a some tricks needed to get through the new security measures in
Vista, but it can be done, and in the end it works fine. Here's how:

1. Turn off the Windows Vista User Account Contral (UAC). This is done
from Users in the Control Panel.

2. Enable the Vista 'Administrator' user account. By default it is disabled.
- In the Start Menu, right click on Computer, select Manage
- In System Tools / Local Users and Groups / Users, open the
properties of the Administrator account and enable it. You will have
to assign a new password to the account. Installation will not work
from a regular account with administrator rights, it must be this
master Administrator account.

3. Create a new standard limited user account called postgres. Give it
a password. The PostgreSQL installer can not create this account in
Vista so do it ahead of time yourself.

4. Login to the new Administrator account.

5. Install PostgreSQL from the windows msi installer file. Remember to
not install PostGIS at this point, you'll want the more upto date
version than wha tthe installer has.
- It will ask for the postgres username and password you created in step 3.
- Install as a Service
- DO NOT select to have the installer initialize a new database. It
will not work. postgres.exe protects you by not running when it has
administrator rights, if you try to have the installer initialize a
new database you will get an 'initdb failed' error message and the
installation will rollback. If you dig deeper it will tell you that
initdb can not find the postgres application even though it is present
in the bin directory. It is there, it just won't run.

6. When the installer has finished successfully, logout of windows.
Log back in as the postgres user.

7. Open a command prompt, this is found in Accessories in the start
menue / All Programs.

8. Initialize a postgresql database.
- change to the C:\Program Files\PostgreSQL\8.2\bin directory
- run a command something like:
initdb -D "C:\Program FIles\PostgreSQL\8.2\data" -U postgres -E UTF8

9. You should now have a working installation of PostgreSQL. Install
PostGIS using the appropriate installer from www.refractions.net.
Remember to get the installer that is made for your version of
PostgreSQL.

10. Disable the Administrator account and turn UAC back on.

11. Profit!!

>From here I had no problems loading data into PostGIS in the usual
ways, my MapServer site is working normally, no problems using it's
PostGIS layers ... although IE7 doesn't seem to like the Rosa applet
much, but that's another story.

Cheers,
Ken Lord
Vancouver BC

Tuesday, August 12, 2008

MapScript on Windows with NetBean

MapScript on Windows with NetBean
I this post i use Netbean 6 and Windows.
Following these step you will can using Mapscipt in your web application:
First install Mapserver for Windows.
  1. Add these path into your Windows's PATH : C:\Program Files\ms4w\Apache\cgi-bin and C:\Program Files\ms4w\Apache\cgi-bin\mapscript\java.
  2. Copy mapscript.jar in C:\Program Files\ms4w\Apache\cgi-bin\mapscript\java to Apache Tomcat 6.0.16\lib which is used by NetBean in your web application.
  3. And now you can use Mapscript in NetBean.

Thursday, August 7, 2008

ERP là gì?

ERP - Hệ quản trị doanh nghiệp tích hợp (Enterprise resources Planning) là bộ giải pháp công nghệ thông tin có khả năng tích hợp toàn bộ ứng dụng quản lí sản xuất kinh doanh vào một hệ thống duy nhất, có thể tự động hoá các quy trình quản lý. Mọi hoạt động của doanh nghiệp, từ quản trị nguồn nhân lực, quản lý dây chuyền sản xuất và cung ứng vật tư, quản lý tài chính nội bộ đến việc bán hàng, tiếp thị sản phẩm, trao đổi với các đối tác, với khách hàng đều được thực hiện trên một hệ thống duy nhất.

Trên thế giới, hiện có rất nhiều doanh nghiệp lớn triển khai và sử dụng trọn bộ giải pháp ERP cho hoạt động quản lý sản xuất kinh doanh trên hai lĩnh vực: Sản xuất chế tạo, kinh doanh dịch vụ. Qua thực tế đã được kiểm nghiệm, ERP được đánh giá cao trong việc giúp doanh nghiệp tăng khả năng cạnh tranh hiệu quả và là lĩnh vực có nhiều tiềm năng phát triển và đầu tư. Việc triển khai thành công ERP sẽ tiết kiệm chi phí, tăng khả năng cạnh tranh, đem lại cho doanh nghiệp lợi ích lâu dài.

Theo các nghiên cứu của Meta Group đối với 63 công ty thì chi phí trung bình cho một dự án ERP bao gồm phần mềm, chi phí nhân công, tư vấn và phần cứng là 15 triệu USD. Mặc dù các dự án ERP rất phức tạp và đắt tiền nhưng nếu được triển khai phù hợp sẽ đem lại những lựi ích không nhỏ. Cụ thể, nếu triển khai được đầy đủ, một hệ thống ERP có thể giúp doanh nghiệp tiết kiệm trung bình hàng năm khoảng 1.6 triệu USD.

Theo đánh giá của các chuyên gia của Công ty SAP, lợi ích lớn nhất của ERP là sự kế thừa các mô hình tiến trình nghiệp vụ tốt nhất được các nhà cung cấp nghiên cứu, tích luỹ kinh nghiệm và áp dụng thành công ở một loạt các doanh nghiệp hoạt động trong lĩnh vực viễn thông trên thế giới. Đối với các nhà quản lý doanh nghiệp, ERP là một công cụ đắc lực để quản lý tập trung toàn bộ hoạt động sản xuất kinh doanh. ERP giúp doanh nghiệp đánh giá được dịch vụ hoặc vùng tập trung nhiều khách hàng, đánh giá dịch vụ khách hàng ưa thích sử dụng cũng như khách hàng tiềm năng. Bên cạnh đó, ERP còn thể hiện nhiều lợi ích khác với tính năng tích hợp như: Phát triển khả năng mua bán và đặt hàng cũng như đăng kí dịch vụ trên mạng; điều phối toàn bộ giá cả cho các dự án; Theo dõi, quản lí và sử dụng các tài sản; Xác định quyền hạn và trách nhiệm của từng người tham gia hệ thống ...

Cấu trúc của hệ thống ERP gồm 5 phần chính:

- Quản lý giao dịch khách hàng (CRM - Customer Relationship Management): cung cấp các tính năng và công cụ phục vụ cho tiếp thị, bán hàng, dịch vụ, hỗ trợ tìm kiếm, thu hút và giữ khách.

- Kinh doanh thông minh (Business Intelligence): cung cấp thông tin đặc thù về kinh doanh ở mọi lĩnh vực của công ty - từ tiếp thị và bán hàng, vận hành của hệ thống mạng đến các chiến lược và kế hoạch về tài chính.

- Quản lý dây chuyền cung cấp (Supply Chain Management): tích hợp hệ thống cung cấp mở rộng và phát triển một môi trường kinh doanh thương mại điện tử thực sự. Chương trình cho phép doanh nghiệp cộng tác trực tiếp với khách hàng, nhà cung cấp ở cả hai phương diện mua và bán, chia sẻ thông tin.

- Thương trường (Marrketplace): cung cấp một hạ tầng cộng tác tạo nên môi trường kinh doanh ảo, giúp mở rộng khả năng hiểu biết về thị trường cũng như sự liên kết chặt chẽ giữa các quy trình kinh doanh với nhau.

- Nơi làm việc (Workplace): Là một cổng ra của công ty cho phép truy xuất thông tin, ứng dụng, dịch vụ bên trong cũng như ngoài công ty bất kỳ lúc nào. Mọi nhân viên, khách hàng, nhà phân phối, đầu tư, các đối tác môi giới trung gian... đều có thể sử dụng cổng vào này với chế độ bảo mật và phân quyền theo chức năng.

Ngoài ra chương trình này còn cung cấp các chức năng cơ bản dành riêng cho lĩnh vực viễn thông như: hỗ trợ số lượng lớn tài khoản khách hàng, phân cấp khách hàng, tự động hóa các quy trình quan trọng. Giải pháp tích hợp nhiều loại thanh toán, xử lý việc nhắc và đòi nợ, trả chậm, tính toán lợi nhuận, hoãn nợ, xử lý thu hồi, trả lại,...
Yêu cầu chung khi tuyển dụng vào vị trí ERP:

* Tốt nghiệp Đại học chuyên ngành Tài chính kế toán, Kiểm toán, Công nghệ thông tin, Quản trị kinh doanh hoặc các ngành liên quan.

* Có kiến thức về tài chính kế toán và quản trị doanh nghiệp.

* Có tinh thần học hỏi, năng động và thích ứng tốt với môi trường làm việc áp lực cao

* Kỹ năng giao tiếp tốt và làm việc theo nhóm

* Sẵn sàng đi công tác xa và nước ngoài

* Có kiến thức và kinh nghiệm triển khai các phần mềm quản trị doanh nghiệp là một lợi thế

Nói tóm lại là phải giỏi trên 2 lĩnh vực là Business + IT

Làm nghề này thì lương rất cao (>700 - 800$) và có nhiều thuận lợi

Monday, August 4, 2008

How to write a better resume


So C Resume2008

From: summerofcode, 23 hours ago





Here is the slide deck for "How to write a better resume" from Summer of Code 2008


SlideShare Link

Monday, July 21, 2008

Kiến trúc J2EE (Java 2 Enterprise Edition)

333
I. J2EE (Java 2 Enterprise Edition)



1. Các loại container trong J2EE

II. Các kỹ thuật liên quan đến kiến trúc J2EE



1. Enterprise java bean
2. Servlet
3. JSP
4. Java message service
5. Java Transaction
6. Java Mail
7. Java bean activation framework
8. Java API for XML Processing .(JAXP)
9. API for XML-Based RPC(JAX-RPC)
10. SOAP with Attachments API for Java(SAAJ)
11. Java API for XML Registries(JAXR)
12. J2EE Connector Architecture
13. JDBC API
14. Java Naming and Directory Interface
15. Java Authentication and Authorization Service
16. Simplified Systems Integration

J2EE

I. J2EE (Java 2 Enterprise Edition)

J2EE là một môi trường phát triển và triển khai các ứng dụng được phát triển bởi Sun.

J2EE là cái nền cung cấp các dịch vụ, các hàm giao tiếp(API) và các giao thức để triển khai các ứng dụng đa tầng.

Các loại container trong J2EE

Server J2EE cung cấp 2 container : Web Container và EJB container


Kien truc J2EE tong quat

+ EJB (Enterprice java bean) container : quản lý và thực thi các thành phần enterprice bean

+ Web Container : quản lý và thực thi các thành phần JSP và Servlet

+ Application Client Container : quản lý và thực thi các thành phần phía client (ví dụ như applet)

II. Các kỹ thuật liên quan đến kiến trúc j2eeCac ky thuat trong J2EE

1. Enterprise java bean

EJB là một thành phần trong bộ phận J2EE, nó có nhiệm vụ cài đặt và xử lý ở tầng nghiệp vụ. Tầng này được Hibernate, Torque, … đã làm đơn giản hóa, tiện cho việc truy xuất object.. Thông thường EJB ảnh hưởng đến database

EJB có 3 thành phần : session bean, entity bean, message driven bean

+ Session bean : thực thi xử lý một tác vụ, sử dụng JDBC để truy xuất database

+ Entity bean : thể hiện dữ liệu, nó có thể một dòng hay một table trong database

+ Message driven bean : được phát sinh sinh các yêu cầu gởi tới xử lý

2. Servlet

Servlet là một ngôn ngữ lập trình được mở rộng chạy trên host, nó được cài đặt truy xuất theo mô hình request-reponse (mô hình web) . Sử dụng Servlet để trình bày giao diện hiện thị trên Web Browse là điều rất khó khăn và phức tạp. Thông thường trong quá trình phát triển phần mềm người ta sử dụng servlet để làm controller.

3. JSP

Java Server Page : Là một document chứa hai loại dữ liệu, các loại dữ liệu tỉnh (HTML, XML,..) và các thẻ jsp

JSP là một kỹ thuật phía trên của Servlet, mục đích đưa ra để tiện cho việc presentation, khi JSP biên dịch ra nó sẽ là Servlet để thực thi phía server.

4. Java message service

JMS là một java API mà mà nó cho phép các ứng dụng tạo, gởi, nhận và đọc message. Kỹ thuật này được thiết kế bởi Sun và các công ty liên kết với Sun. JMS API định nghĩa các giao tiếp chung và các liên kết cho phép các chương trình viết trong ngôn ngữ java có thể truyền thông với các message khác được cài dặt .

JMS là một thành phần chuẩn trong J2EE.

5. Java Transaction

JTA cung cấp các tiêu chuẩn để phân ranh giới giữa hai giao tác (transaction) . Trong J2EE cung cấp mặc định chế độ auto commit khi sử dụng giao tác commit hay rollback

6. Java Mail

Các ứng dụng J2EE sử dụng JavaMail API để gởi mail. JavaMail API có hai thành phần

+ Giao tiếp ở mức ứng dụng được sử dụng bởi các thành phần ứng dụng để gởi mail

+ Bộ phận cung cấp dịch vụ giao tiếp để gởi mail

Nền J2EE bao gồm JavaMail với bộ phận cung cấp dịch vụ mail mà điều này cho phép các thành phần của ứng dụng gởi mail được trên internet

7. Java bean activation framework

JAF được đưa vào nền J2EE bởi vì JavaMail sử dụng nó để gởi mail. JAF cung cấp các dịch vụ chuẩn để xử lý các kiểu phân đoạn, đóng gói , truy xuất đến dữ liệu của JAF, tận dụng các hàm hỗ trợ có sẵn trong JAF , xây dựng các thành phần JavaBean sử dụng thế mạnh các hàm đã hỗ trợ.

8. Java API for XML Processing .(JAXP)

Chức năng : hỗ trợ xử lý tài liệu XML sử dụng DOM( ) , SAX(Simple API for

XML),Extensible Stylesheet Language Transformations(XSLT).

JAXP cho phép các ứng dụng phân tích cú pháp và chuyển đổi các tài liệu XML độc

lập với một tiến trình thực thi xml riêng biệt.

JAXP cũng cung cấp hỗ trợ namespace

9. API for XML-Based RPC(JAX-RPC)

Chức năng:JAX-RPC sử dụng SOAP và HTTP, vì vậy các chương trình có thể tạo ra

các cuộc gọi thủ tục từ xa qua Internet dựa vào XML . JAX-RPC cũng hỗ trợ WSDL,bạn có thể import và export tài liệu WSDL.

10. SOAP with Attachments API for Java(SAAJ)

Chức năng: SAAJ cho phép tạo ra và hủy các thông điệp mà dựa trên SOAP 1.1 và SOAP with Attachment note

Hần hết nhà phát triển không sử dụng g SAAJ API , mà dùng công nghệ cao hơn như

JAX-RPC API

11. Java API for XML Registries(JAXR)

Chức năng:JAXR để bạn truy xuất các đăng ký các mục đích chung và các giao dịch trên Web.JAXR hỗ trợ ebXML Register and Repository standards và các thông số kỹ thuật UDDI

12. J2EE Connector Architecture

Kỹ thuật J2EE Connector được sử dụng bởi những nhà cung cấp những công cụ J2EE và sự tích hợp hệ thống để tạo ra những bộ tiếp hợp tài nguyên mà hỗ trợ những truy nhập tới hệ thông tin doanh nghiệp mà có thể được cắm vào tới bất kỳ (cái) sản phẩm J2EE.

Kỹ thuật J2EE Connector cũng cung cấp một sự thi hướng đối tượng , an toàn, thay đổi được

13. JDBC API

JDBC API để cho bạn thực thi các câu truy vấn từ các phương thức ngôn ngữ lập trình Java

JDBC API gồm hai phần: một giao diện(interface) mức ứng dụng được dùng bởi những thành phần ứng dụng để truy nhập một cơ sở dữ liệu, và một giao diện cung cấp dịch vụ(a service provider interface) để gán điều khiển JDBC tới J2EE flatform

14. Java Naming and Directory Interface

JNDI: cung cấp những ứng dụng với những phương pháp để thực hiện những thao tác thư mục chuẩn, như kết hợp những thuộc tính với những đối tượng và tìm kiếm những đối tượng sử dụng những thuộc tính của chúng.

15. Java Authentication and Authorization Service

Sự chứng thực và dịch vụ cho phép (JAAS) cung cấp một cách cho một ứng dụng J2EE xác nhận và cho phép một người sử dụng hay nhóm những người sử dụng để chạy các dịch vụ.

16. Simplified Systems Integration

a) Nền tảng(platform) J2EE là một nền tảng độc lập,giải pháp tích hợp các hệ thống trọn vẹn tạo ra 1 một chợ mở trong đó các nhà cung cấp có thể bán hàng cho từng khách hàng. Một chỗ họp chợ như vậy khuyến khích những nhà cung cấp để tranh đua, không phải bằng việc thử hãm lại những khách hàng vào trong những công nghệ của họ, thay vào đó bằng việc thử làm giỏi hơn lẫn nhau trong việc cung cấp những sản phẩm và những dịch vụ khách hàng tốt hơn.

b) J2EE APIs cho phép những hệ thống và sự tích hợp những ứng dụng thông qua những mục sau đây:

i. Thống nhất các mô hình ứng dụng qua các tầng với enterprise beans.

ii. Cơ chế response và request đơn giản hóa với trang JSP và servlets.

iii. Mô hình bảo mật an toàn (JASS)

iv. Kết nối CSDL dễ dàng qua JDBC API

v. Tích hợp trao đổi dữ liệu dựa trên XML với JAXP,SAAJ,và JAX-RPC

i. Thống nhất các mô hì



Friday, July 18, 2008

Insert data to access order by field!

When we using DAO, sometimes we need insert a record into database order by one filed.How to do it?Follow these steps:
Dao.recordset rc;
At initiation, you must select from table order by the field which you want to sort by:
Select * from table order by field;
When insert, after update method.You call requery method:
rc.Requery;
And finally you find the record you have just insert by .FindFirst.

Thursday, July 17, 2008

Adding new users to MySQL Databases

#
# Connect to the local database server as user root
# You will be prompted for a password.
#
mysql -h localhost -u root -p

#
# Now we see the 'mysql>' prompt and we can run
# the following to create a new database for Paul.
#
mysql> create database pauldb;
Query OK, 1 row affected (0.00 sec)

#
# Now we create the user paul and give him full
# permissions on the new database
mysql> grant CREATE,INSERT,DELETE,UPDATE,SELECT on pauldb.* to paul@localhost;
Query OK, 0 rows affected (0.00 sec)

#
# Next we set a password for this new user
#
mysql> set password for paul = password('mysecretpassword');
Query OK, 0 rows affected (0.00 sec)
But sometimes it doesn't work(or always :D) you must you the following command:
mysql> set password for 'paul'@'localhost' = password('password');

#
# Cleanup and ext
mysql> flush privileges;
mysql> exit;

Change root password in MySql

mysqladmin command to change root password

If you have never set a root password for MySQL, the server does not require a password at all for connecting as root. To setup root password for first time, use mysqladmin command at shell prompt as follows:

$ mysqladmin -u root password NEWPASSWORD

However, if you want to change (or update) a root password, then you need to use following command

$ mysqladmin -u root -p oldpassword newpass

Enter password:

Change MySQL password for other user

To change a normal user password you need to type (let us assume you would like to change password for vivek):

$ mysqladmin -u vivek -p oldpassword newpass

Changing MySQL root user password using mysql sql command

This is another method. MySQL stores username and passwords in user table inside MySQL database. You can directly update password using the following method to update or change password for user vivek:

1) Login to mysql server, type following command at shell prompt:

$ mysql -u root -p

2) Use mysql database (type command at mysql> prompt):

mysql> use mysql;

3) Change password for user vivek:

mysql> update user set password=PASSWORD("NEWPASSWORD") where User='vivek';
) Reload privileges:
mysql> flush privileges;
mysql> quit

---------------------------------