?? rsmd.java
字號:
package cn.itcast.jdbc;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import cn.itcast.domain.User;
public class RSMD {
/**
* @param args
* @throws SQLException
* @throws IllegalAccessException
* @throws InstantiationException
* @throws InvocationTargetException
* @throws IllegalArgumentException
*/
public static void main(String[] args) throws Exception,
IllegalArgumentException, InvocationTargetException {
String sql = "select id as Id, name as Name, birth_day as BirthDay, age as Age from user";
List list = testData(sql, User.class);
for (Iterator iter = list.iterator(); iter.hasNext();) {
User user = (User) iter.next();
System.out.print(user.getId());
System.out.print(user.getName());
System.out.print(user.getAge());
System.out.print(user.getBirthDay());
System.out.println();
}
}
static List testData(String sql, Class clazz) throws Exception {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
List list = new ArrayList();
try {
conn = JdbcUtils.getConnection();
st = conn.createStatement();
rs = st.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
int colCount = rsmd.getColumnCount();
String[] colNames = new String[colCount];
for (int i = 0; i < colCount; i++) {
colNames[i] = rsmd.getColumnLabel(i + 1);
}
System.out.println(Arrays.asList(colNames));
while (rs.next()) {
Object obj = clazz.newInstance();
for (int i = 0; i < colCount; i++) {
Method m = findMethod(colNames[i], clazz);
if (m != null)
try {
m.invoke(obj, rs.getObject(colNames[i]));
} catch (Exception e) {
System.out.println(colNames[i] + " error!");
System.out.println(rsmd.getColumnType(i + 1));
throw e;
}
}
list.add(obj);
}
} finally {
JdbcUtils.realse(rs, st, conn);
}
return list;
}
static Method findMethod(String colName, Class clazz) {
Method[] ms = clazz.getDeclaredMethods();
colName = "set" + colName;
for (int i = 0; i < ms.length; i++)
if (colName.equals(ms[i].getName()))
return ms[i];
return null;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -