程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 如何用Java實現.NET中DataTable功能(2)

如何用Java實現.NET中DataTable功能(2)

編輯:關於JAVA

現在說如何實現

1)實現.Net數據庫參數化。

  1. package cdu.yas.xykps.util;
  2. import Java.sql.Blob;
  3. import Java.sql.Date;
  4. /**
  5. * @功能描述 sql參數,sql執行時傳遞的參數用此類封裝
  6. * @可能的錯誤
  7. * @作者 王磊
  8. * @修改說明
  9. * @修改人
  10. */
  11. public class SqlParameter {
  12. public SqlParameter(String type, String value) {
  13. this.type = type;
  14. this.value = value;
  15. }
  16. public SqlParameter(String type, int intValue) {
  17. this.type = type;
  18. this.intValue = intValue;
  19. }
  20. public SqlParameter(String type, boolean boolValue) {
  21. this.type = type;
  22. this.boolValue = boolValue;
  23. }
  24. public SqlParameter(String type, Date dateValue) {
  25. this.type = type;
  26. this.dateValue = dateValue;
  27. }
  28. public SqlParameter(String type, Blob blobValue) {
  29. this.type = type;
  30. this.blobValue = blobValue;
  31. }
  32. String type;
  33. String value;
  34. int intValue;
  35. boolean boolValue;
  36. Date dateValue;
  37. Blob blobValue;
  38. public String getType() {
  39. return type;
  40. }
  41. public String getValue() {
  42. return value;
  43. }
  44. public int getIntValue() {
  45. return intValue;
  46. }
  47. public boolean getBoolValue() {
  48. return boolValue;
  49. }
  50. public Date getDateValue() {
  51. return dateValue;
  52. }
  53. public Blob getBlobValue() {
  54. return blobValue;
  55. }
  56. public void setType(String type) {
  57. this.type = type;
  58. }
  59. public void setValue(String value) {
  60. this.value = value;
  61. }
  62. public void setIntValue(int intValue) {
  63. this.intValue = intValue;
  64. }
  65. public void setBoolValue(boolean boolValue) {
  66. this.boolValue = boolValue;
  67. }
  68. public void setDateValue(Date dateValue) {
  69. this.dateValue = dateValue;
  70. }
  71. public void setBlobValue(Blob blobValue) {
  72. this.blobValue = blobValue;
  73. }
  74. }

2)後台參數執行:

  1. /**
  2. * @功能描述 執行一條select語句返回一張數據表,支持多表查詢
  3. * @可能的錯誤
  4. * @作者 王磊
  5. * @修改說明
  6. * @修改人
  7. */
  8. public DataTable getDataTable(String sql, SqlParameter[] p) {
  9. Connection conn = DB.createConn();
  10. PreparedStatement ps = DB.prepare(conn, sql);
  11. DataTable t = null;
  12. try {
  13. addSqlParameter(ps, p);
  14. ResultSet rs = ps.executeQuery();
  15. ResultSetMetaData rsmd = rs.getMetaData();
  16. List<DataRow> row = new ArrayList<DataRow>();// 表所有行集合
  17. List<DataColumn> col = null;// 行所有列集合
  18. DataRow r = null; // 單獨一行
  19. DataColumn c = null;// 單獨一列
  20. // 此處開始循環讀數據,每次往表格中插入一行記錄
  21. while (rs.next()) {
  22. // 初始化行集合,
  23. // 初始化列集合
  24. col = new ArrayList<DataColumn>();
  25. // 此處開始列循環,每次向一行對象插入一列
  26. for (int i = 1; i <= rsmd.getColumnCount(); i++) {
  27. String columnName = rsmd.getColumnName(i);
  28. Object value = rs.getObject(columnName);
  29. // 初始化單元列
  30. c = new DataColumn(columnName, value);
  31. // 將列信息加入列集合
  32. col.add(c);
  33. }
  34. // 初始化單元行
  35. r = new DataRow(col);
  36. // 將行信息降入行結合
  37. row.add(r);
  38. }
  39. // 得到數據表
  40. t = new DataTable(row);
  41. rs.close();
  42. rs = null;
  43. } catch (SQLException e) {
  44. e.printStackTrace();
  45. } finally {
  46. DB.close(ps);
  47. DB.close(conn);
  48. }
  49. return t;
  50. }
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved