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

      咨詢電話:0551-62903161

      學術交流

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


       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);
          //參數信息
          ParameterMetaData pmd = ps.getParameterMetaData();
                  //通過獲取參數個數來提高代碼靈活性
                  int count = pmd.getParameterCount();
                  System.out.println("參數個數:" + count);
                  
                  //打印數據庫參數信息,MySQL的輸出并不準確
                  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));
              }



      利用此功能,可以實現類似通用查詢的功能,代碼片段如下,此方式不能封裝對象,只能用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);
              }



      友情鏈接:北大青鳥科海學院合肥濱湖職業技術學院合肥公交技校 安徽衛生健康職業學院
      獲獎信息:

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

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

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

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

          亚洲国产精品va在线观看香蕉 | 亚洲se频在线观看 | 亚洲图片中文字幕 | 网爆热门视频亚洲精品在线观看 | 日本激情视频A∨一区 | 亚洲成色最大综合在线播放6 |