<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 25, comments - 69, trackbacks - 0, articles - 2

    說(shuō)明:根據(jù)提供的sql/標(biāo)題/參數(shù)列表進(jìn)行查詢,返回的二維String數(shù)組可以直接用來(lái)顯示,將會(huì)陸續(xù)增加排序/格式化等功能,核心的execQuery方法如下:

    public String[][] execSQL(String sql,String[] titles,Object[] params) throws Exception {

    //todo:驗(yàn)證數(shù)據(jù)庫(kù)連接是否可用
    ??if(con==null||con.isClosed())throw new Exception("數(shù)據(jù)庫(kù)連接不可用");

    //todo:簡(jiǎn)單的驗(yàn)證輸入?yún)?shù)
    ??if(sql==null)
    ???throw new Exception("SQL語(yǔ)句不能為空");
    ??sql=sql.trim();
    ??if(sql.equals(""))
    ???throw new Exception("SQL語(yǔ)句不能為空");
    ??
    //對(duì)輸入?yún)?shù)做簡(jiǎn)單的日志記錄??
    logger.info(sql);??
    ??logger.info(Dao.msgOfArray(titles));
    ??logger.info(Dao.msgOfArray(params));
    ???
    //準(zhǔn)備sql??
    PreparedStatement pst = con.prepareStatement(sql);

    //如果參數(shù)不空,則準(zhǔn)備參數(shù)??
    if(params!=null)
    ??{
    ???for(int i=0;i<params.length;i++)
    ???{
    ????if(params[i]==null)
    ????{
    ?????break;
    ????}
    ????pst.setObject(i+1,params[i]);? //此處依賴JDBC Driver實(shí)現(xiàn),不同的驅(qū)動(dòng)可能實(shí)現(xiàn)的程度不一樣
    ???}
    ??}

    //查詢
    ??ResultSet rs = pst.executeQuery();
    ??
    //metaData
    ResultSetMetaData md = rs.getMetaData();
    ??int colCount = md.getColumnCount();
    ??ArrayList al = new ArrayList(maxCount); //maxCount為Dao的一個(gè)屬性,定義每次查詢返回的最大記錄數(shù)

    //如果參數(shù)沒(méi)有輸入表格頭信息,則從metadata取得列名字作為默認(rèn)值??
    if (titles == null) {
    ???titles = new String[colCount];
    ???for (int i = 0; i < colCount; i++) {
    ????String columnName = md.getColumnName(i + 1);
    ????if (columnName == null) {
    ?????columnName = "無(wú)列名";
    ????};
    ????titles[i] = columnName;
    ???}
    ??}

    ??int count = 0;
    ??al.add(count++, titles); // 標(biāo)題

    //遍歷結(jié)果集合?
    ?while (rs.next()) {
    ???String[] buffer = new String[colCount];
    ???for (int i = 0; i < colCount; i++) {
    ????int type = md.getColumnType(i + 1);
    ????int scale = md.getScale(i + 1);
    ????String value=null;

    //todo:根據(jù)對(duì)于頁(yè)面顯示的要求,對(duì)不同的數(shù)據(jù)類型用不同的方式格式化
    ????switch (type)
    ????{
    ????case Types.LONGVARCHAR: // -1 dataType="Long";
    ?????value=rs.getString(i+1);
    ?????break;
    ????case Types.CHAR: // 1 dataType="Character";
    ?????value=rs.getString(i+1);
    ?????break;
    ????case Types.NUMERIC: // 2
    ?????switch (scale) {
    ?????case 0: // dataType="Number";
    ??????value=rs.getString(i+1);
    ??????break;
    ?????case -127: // dataType="Float";
    ??????value=rs.getString(i+1);
    ??????break;
    ?????default:
    ??????value=rs.getString(i+1);
    ???????? break;
    ?????}
    ?????break;

    ????case Types.VARCHAR: // 12
    ?????// dataType="String";
    ?????value=rs.getString(i+1);
    ?????break;
    ????case Types.DATE: // 91
    ?????// dataType="Date";
    ?????value=rs.getString(i+1);
    ?????break;
    ????case Types.TIMESTAMP: // 93
    ?????// dataType="Date";
    ?????value=rs.getString(i+1);
    ?????break;
    ????case Types.BLOB:
    ?????// dataType="Blob";
    ?????value="不支持的數(shù)據(jù)類型";
    ?????break;
    ????default:
    ?????value=rs.getString(i+1);
    ????}
    ????
    ????buffer[i]=value;
    ???}
    ???al.add(count++, buffer);
    ???if (count >= maxCount) {
    ????break;
    ???}
    ??}

    //convert to String[][] and return??
    String[][] returnValue = new String[count][];
    ??for (int i = 0; i < count; i++) {
    ???returnValue[i] = (String[]) al.get(i);
    ??}
    ??return returnValue;
    ?}
    //end here


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产一区二区三区在线免费观看 | 久久久久亚洲AV片无码| 久久免费视频观看| 亚洲另类春色校园小说| 免费jlzzjlzz在线播放视频| 你是我的城池营垒免费观看完整版| 亚洲国产精品国自产电影| 香蕉高清免费永久在线视频 | 免费看又爽又黄禁片视频1000| 一级特黄特色的免费大片视频| 色婷婷六月亚洲婷婷丁香| 国产精品公开免费视频| 大地资源中文在线观看免费版| 亚洲成_人网站图片| 亚洲啪啪综合AV一区| 免费无码又爽又高潮视频| a级毛片高清免费视频| 亚洲AV无码国产剧情| 亚洲最新视频在线观看| 亚洲人成色77777在线观看大| 国产成人免费午夜在线观看| 一级特黄特色的免费大片视频| 亚洲娇小性xxxx色| 亚洲国产精品久久久天堂| 四虎影院永久免费观看| 国产免费一区二区三区| 99久久成人国产精品免费| 蜜芽亚洲av无码一区二区三区 | 一级做a爰片久久毛片免费陪 | 特级毛片aaaa免费观看 | 一区二区在线免费观看| 美女黄色免费网站| 色偷偷亚洲女人天堂观看欧| 久久亚洲AV午夜福利精品一区 | 国产亚洲?V无码?V男人的天堂 | 中文字幕精品三区无码亚洲| 亚洲AV日韩AV永久无码久久| 亚洲综合久久夜AV | 四虎影视在线永久免费看黄| 成人无遮挡裸免费视频在线观看| 50岁老女人的毛片免费观看|