Part 2: Introduction Metadata in JDBC


Hôm nay mình xin nói đến một vài cách thao tác với metadata trong JDBC Nói đến nó chỉ cần nhớ đến 2 cái khá quan trọng đó là 1- Tên Columns trong 1 bảng. 2- Loại dữ liệu của từng Column. 2 cái này khá quan trọng trong việc ta thao tác với dữ liệu. Đây là một ví dụ điển hình. Nếu các bạn chỉ dùng ResultSet lấy thông tin của toàn bảng thông qua câu lệnh ResultSet rs = statement.executeQuery(Select * fron…..) lúc này khi xuất ra thì các bạn getXXX tùy ý , get theo cái mà bạn nhớ là MaSo là String, Lương là float double…hay gì đó. Đối với 1 Cơ sở dữ liệu lớn có tới hàng chục bảng trong đó, thì đó rất là bất lợi. đó là vì sao chúng ta phải quan tâm đến 2 đối tượng này. 2 interface mà chúng ta cần nhớ ở đây là DatabaseMetadata và ResultSetMeta Sau đây là ví dụ về các thao tác Metadata: Nguồn vovanhai.wordpress.com

Lấy tất cả các bảng có trong 1 cơ sở dữ liệu

public Vector<String> getTable(){
		Vector<String> allField=new Vector<String>();
		try {	    
			String []tableTypes={"TABLE","VIEW"};
			ResultSet table=metadata.getTables(null,null,null,tableTypes);
			
			String TableName="";
			while(table.next()){
				TableName=table.getString("TABLE_NAME");
				allField.addElement(TableName);
			}
		}catch (Exception ex) {
			ex.printStackTrace();
	    }
		return allField;
	}

Lấy các fields có trong 1 bảng

public Vector<cRowInfos> getColumns(String tableName){
	Vector<cRowInfos> tblInfo=new Vector<cRowInfos>();
	try {
		ResultSet columnName=metadata.getColumns(null,null,tableName,null);
		while(columnName.next()){
			String n=(columnName.getString("COLUMN_NAME"));
			String t=""+(columnName.getString("TYPE_NAME"));
			String s=""+columnName.getString("COLUMN_SIZE");
			String nu=""+columnName.getString("IS_NULLABLE");
			tblInfo.addElement(new cRowInfos(n,t,s,nu));
		}
	}
	catch (Exception ex) {
		ex.printStackTrace();
	}
	return tblInfo;
}

Với cRowInfos có code như sau:

public class cRowInfos
{
	protected String rName;
	protected String rLength;
	protected String rType;
	protected String rNullable;
	cRowInfos(String n,String t,String l,String na){
		rName=n;
		rLength=l;
		rType=t;
		rNullable=na;
	}
	public String toString(){
		return rName+";\t"+rType+";\t"+rLength+";\t"+rNullable;
	}
	public String getName(){
		return rName;
	}
	public String getLength(){
		return rLength;
	}
	public String getType(){
		return rType;
	}
	public String getNull(){
		return rNullable;
	}
}

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: