<u id="1k2el"></u>
<u id="1k2el"></u>

      咨詢電話:0551-62903161

      學(xué)術(shù)交流

      首頁>官網(wǎng)首頁 > 教育教學(xué) > 學(xué)術(shù)交流 >
      北大青鳥科海講堂老師教你:jdbc metadata的用法
      作者:未知  時間:2018-12-29 17:05
             jdbc metadata,稱為jdbc元數(shù)據(jù),是描述jdbc連接、查詢信息的方式。Java 通過JDBC獲得連接以后,得到一個Connection 對象,可以從這個對象獲得有關(guān)數(shù)據(jù)庫管理系統(tǒng)的各種信息,包括數(shù)據(jù)庫中的各個表,表中的各個列,數(shù)據(jù)類型,觸發(fā)器,存儲過程等各方面的信息。根據(jù)這些信息,JDBC可以訪問一個實現(xiàn)事先并不了解的數(shù)據(jù)庫。
      1.     DatabaseMetaData:獲得連接信息,主要是數(shù)據(jù)庫信息
      2.    ResultSetMetaData:列信息
      3.    ParameterMetaData:參數(shù)信息
      參考下面的案例


       Connection con = DBUtil.getConnection();
              //  jdbc的連接信息
              DatabaseMetaData cm = con.getMetaData();
              System.out.println(cm.getDatabaseProductName());
              System.out.println(cm.getDatabaseMajorVersion());
              System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>");
              String sql = "select * from student where id>? and name like ?";


              PreparedStatement ps = con.prepareStatement(sql);
          //參數(shù)信息
          ParameterMetaData pmd = ps.getParameterMetaData();
                  //通過獲取參數(shù)個數(shù)來提高代碼靈活性
                  int count = pmd.getParameterCount();
                  System.out.println("參數(shù)個數(shù):" + count);
                  
                  //打印數(shù)據(jù)庫參數(shù)信息,MySQL的輸出并不準(zhǔn)確
                  for(int i = 1; i <= count; i ++) {
                      System.out.print(pmd.getParameterClassName(i) + " ");
                      System.out.print(pmd.getParameterType(i) + " ");
                      System.out.println(pmd.getParameterTypeName(i));
                      
                  }
       

              ps.setInt(1,40);
              ps.setString(2,"%王%");//模糊查找
            ResultSet rs = ps.executeQuery();
          //列信息
                ResultSetMetaData rm = rs.getMetaData();
              System.out.println("總共有" + rm.getColumnCount() + "列");
              for (int i = 1; i <= rm.getColumnCount(); i++) {
                  System.out.println(rm.getColumnLabel(i) + ","
                          + rm.getColumnTypeName(i));
              }



      利用此功能,可以實現(xiàn)類似通用查詢的功能,代碼片段如下,此方式不能封裝對象,只能用Map封裝行信息:
       rm為ResultSetMetaData 對象
      ResultSet rs = ps.executeQuery();
              List<Map> datas = new ArrayList<Map>();
              while (rs.next()) {
                  Map entity = new HashMap();
                  for (int i = 1; i <= rm.getColumnCount(); i++) {
                      entity.put(rm.getColumnLabel(i),
                              rs.getObject(rm.getColumnLabel(i)));
                  }
                  datas.add(entity);
              }
              DBUtil.close(rs, ps, con);
              for (Map m : datas) {
                  System.out.println(m);
              }



      友情鏈接:北大青鳥科海學(xué)院合肥濱湖職業(yè)技術(shù)學(xué)院合肥公交技校 安徽衛(wèi)生健康職業(yè)學(xué)院
      獲獎信息:

      地鐵:乘地鐵1號線到合工大南區(qū)B出口,向南800米即到。

      聯(lián)系我們:招生老師15056993965(微信手機(jī)同號) ? ? ?0551-62903161

      地址:合肥市包河區(qū)馬鞍山路富成大廈4樓北大青鳥(合工大東門斜對面)

      日韩黄色毛片在线观看_96精品人妻大胆无码_亚洲一区二区在线波多野_在线视频一区二区三期
      <u id="1k2el"></u>
      <u id="1k2el"></u>

          欧美日韩中文字幕久久久不卡 | 天堂aⅴ日韩欧美国产 | 自拍视频精品一区二区三区 | 亚洲美乳中文字幕 | 午夜福利免费区在线观看手机 | 亚洲免费精品一区二区三区 |