2)后台参数执行:
/**
* @功能描述 执行一条select语句返回一张数据表,支持多表查询
* @可能的错误
* @作者 王磊
* @修改说明
* @修改人
*/
public DataTable getDataTable(String sql, SqlParameter[] p) {
Connection conn = DB.createConn();
PreparedStatement ps = DB.prepare(conn, sql);
DataTable t = null;
try {
addSqlParameter(ps, p);
ResultSet rs = ps.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
List<DataRow> row = new ArrayList<DataRow>();// 表所有行集合
List<DataColumn> col = null;// 行所有列集合
DataRow r = null; // 单独一行
DataColumn c = null;// 单独一列
// 此处开始循环读数据,每次往表格中插入一行记录
while (rs.next()) {
// 初始化行集合,
// 初始化列集合
col = new ArrayList<DataColumn>();
// 此处开始列循环,每次向一行对象插入一列
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
String columnName = rsmd.getColumnName(i);
Object value = rs.getObject(columnName);
// 初始化单元列
c = new DataColumn(columnName, value);
// 将列信息加入列集合
col.add(c);
}
// 初始化单元行
r = new DataRow(col);
// 将行信息降入行结合
row.add(r);
}
// 得到数据表
t = new DataTable(row);
rs.close();
rs = null;
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(ps);
DB.close(conn);
}
return t;
}
* @功能描述 执行一条select语句返回一张数据表,支持多表查询
* @可能的错误
* @作者 王磊
* @修改说明
* @修改人
*/
public DataTable getDataTable(String sql, SqlParameter[] p) {
Connection conn = DB.createConn();
PreparedStatement ps = DB.prepare(conn, sql);
DataTable t = null;
try {
addSqlParameter(ps, p);
ResultSet rs = ps.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
List<DataRow> row = new ArrayList<DataRow>();// 表所有行集合
List<DataColumn> col = null;// 行所有列集合
DataRow r = null; // 单独一行
DataColumn c = null;// 单独一列
// 此处开始循环读数据,每次往表格中插入一行记录
while (rs.next()) {
// 初始化行集合,
// 初始化列集合
col = new ArrayList<DataColumn>();
// 此处开始列循环,每次向一行对象插入一列
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
String columnName = rsmd.getColumnName(i);
Object value = rs.getObject(columnName);
// 初始化单元列
c = new DataColumn(columnName, value);
// 将列信息加入列集合
col.add(c);
}
// 初始化单元行
r = new DataRow(col);
// 将行信息降入行结合
row.add(r);
}
// 得到数据表
t = new DataTable(row);
rs.close();
rs = null;
} catch (SQLException e) {
e.printStackTrace();
} finally {
DB.close(ps);
DB.close(conn);
}
return t;
}
3)增加参数的方法:
/**
* @功能描述 增加参数方法
* @可能的错误 需要测试全局数据共享问题,以及可能会扩展参数类型
* @作者 王磊
* @修改说明
* @修改人
*/
private void addSqlParameter(PreparedStatement ps, SqlParameter[] p)
throws SQLException {
for (int j = 0; j < p.length; j++) {
// wl(p[j].getValue() + "--" + p[j].getType() + "--" + j);
if (p[j].getType().equals("int")) {
ps.setInt(j + 1, p[j].getIntValue());
}
if (p[j].type.equals("String")) {
ps.setString(j + 1, p[j].getValue());
}
if (p[j].type.equals("boolean")) {
ps.setBoolean(j + 1, p[j].getBoolValue());
}
if (p[j].type.equals("Date")) {
ps.setDate(j + 1, p[j].getDateValue());
}
if (p[j].type.equals("Blob")) {
ps.setBlob(j + 1, p[j].getBlobValue());
}
}
}
* @功能描述 增加参数方法
* @可能的错误 需要测试全局数据共享问题,以及可能会扩展参数类型
* @作者 王磊
* @修改说明
* @修改人
*/
private void addSqlParameter(PreparedStatement ps, SqlParameter[] p)
throws SQLException {
for (int j = 0; j < p.length; j++) {
// wl(p[j].getValue() + "--" + p[j].getType() + "--" + j);
if (p[j].getType().equals("int")) {
ps.setInt(j + 1, p[j].getIntValue());
}
if (p[j].type.equals("String")) {
ps.setString(j + 1, p[j].getValue());
}
if (p[j].type.equals("boolean")) {
ps.setBoolean(j + 1, p[j].getBoolValue());
}
if (p[j].type.equals("Date")) {
ps.setDate(j + 1, p[j].getDateValue());
}
if (p[j].type.equals("Blob")) {
ps.setBlob(j + 1, p[j].getBlobValue());
}
}
}