現在說如何實現
1)實現.Net數據庫參數化。
- package cdu.yas.xykps.util;
- import Java.sql.Blob;
- import Java.sql.Date;
- /**
- * @功能描述 sql參數,sql執行時傳遞的參數用此類封裝
- * @可能的錯誤
- * @作者 王磊
- * @修改說明
- * @修改人
- */
- public class SqlParameter {
- public SqlParameter(String type, String value) {
- this.type = type;
- this.value = value;
- }
- public SqlParameter(String type, int intValue) {
- this.type = type;
- this.intValue = intValue;
- }
- public SqlParameter(String type, boolean boolValue) {
- this.type = type;
- this.boolValue = boolValue;
- }
- public SqlParameter(String type, Date dateValue) {
- this.type = type;
- this.dateValue = dateValue;
- }
- public SqlParameter(String type, Blob blobValue) {
- this.type = type;
- this.blobValue = blobValue;
- }
- String type;
- String value;
- int intValue;
- boolean boolValue;
- Date dateValue;
- Blob blobValue;
- public String getType() {
- return type;
- }
- public String getValue() {
- return value;
- }
- public int getIntValue() {
- return intValue;
- }
- public boolean getBoolValue() {
- return boolValue;
- }
- public Date getDateValue() {
- return dateValue;
- }
- public Blob getBlobValue() {
- return blobValue;
- }
- public void setType(String type) {
- this.type = type;
- }
- public void setValue(String value) {
- this.value = value;
- }
- public void setIntValue(int intValue) {
- this.intValue = intValue;
- }
- public void setBoolValue(boolean boolValue) {
- this.boolValue = boolValue;
- }
- public void setDateValue(Date dateValue) {
- this.dateValue = dateValue;
- }
- public void setBlobValue(Blob blobValue) {
- this.blobValue = blobValue;
- }
- }
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;
- }