亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? linkedindex.java

?? 非常棒的java數據庫
?? JAVA
字號:
/*
 * Copyright 2004-2008 H2 Group. Licensed under the H2 License, Version 1.0
 * (http://h2database.com/html/license.html).
 * Initial Developer: H2 Group
 */
package org.h2.index;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.h2.constant.ErrorCode;
import org.h2.engine.Constants;
import org.h2.engine.Session;
import org.h2.message.Message;
import org.h2.result.Row;
import org.h2.result.SearchRow;
import org.h2.table.IndexColumn;
import org.h2.table.TableLink;
import org.h2.value.Value;
import org.h2.value.ValueNull;

/**
 * A linked index is a index for a linked (remote) table.
 * It is backed by an index on the remote table which is accessed over JDBC.
 */
public class LinkedIndex extends BaseIndex {

    private TableLink link;
    private String targetTableName;

    public LinkedIndex(TableLink table, int id, IndexColumn[] columns, IndexType indexType) {
        super(table, id, null, columns, indexType);
        link = table;
        targetTableName = link.getQualifiedTable();
    }

    public String getCreateSQL() {
        return null;
    }

    public void close(Session session) throws SQLException {
    }

    private boolean isNull(Value v) {
        return v == null || v == ValueNull.INSTANCE;
      }

    public void add(Session session, Row row) throws SQLException {
        StringBuffer buff = new StringBuffer("INSERT INTO ");
        buff.append(targetTableName);
        buff.append(" VALUES(");
        for (int i = 0, j = 0; i < row.getColumnCount(); i++) {
            Value v = row.getValue(i);
            if (j > 0) {
                buff.append(',');
            }
            j++;
            if (isNull(v)) {
                buff.append("NULL");
            } else {
                buff.append('?');
            }
        }
        buff.append(')');
        String sql = buff.toString();
        try {
            PreparedStatement prep = link.getPreparedStatement(sql);
            for (int i = 0, j = 0; i < row.getColumnCount(); i++) {
                Value v = row.getValue(i);
                if (v != null && v != ValueNull.INSTANCE) {
                    v.set(prep, j + 1);
                    j++;
                }
            }
            prep.executeUpdate();
            rowCount++;
        } catch (SQLException e) {
            throw wrapException(sql, e);
        }
    }

    public Cursor find(Session session, SearchRow first, SearchRow last) throws SQLException {
        StringBuffer buff = new StringBuffer();
        for (int i = 0; first != null && i < first.getColumnCount(); i++) {
            Value v = first.getValue(i);
            if (v != null) {
                if (buff.length() != 0) {
                    buff.append(" AND ");
                }
                buff.append(table.getColumn(i).getSQL());
                buff.append(">=?");
            }
        }
        for (int i = 0; last != null && i < last.getColumnCount(); i++) {
            Value v = last.getValue(i);
            if (v != null) {
                if (buff.length() != 0) {
                    buff.append(" AND ");
                }
                buff.append(table.getColumn(i).getSQL());
                buff.append("<=?");
            }
        }
        if (buff.length() > 0) {
            buff.insert(0, " WHERE ");
        }
        buff.insert(0, "SELECT * FROM " + targetTableName + " T");
        String sql = buff.toString();
        try {
            PreparedStatement prep = link.getPreparedStatement(sql);
            int j = 0;
            for (int i = 0; first != null && i < first.getColumnCount(); i++) {
                Value v = first.getValue(i);
                if (v != null) {
                    v.set(prep, j + 1);
                    j++;
                }
            }
            for (int i = 0; last != null && i < last.getColumnCount(); i++) {
                Value v = last.getValue(i);
                if (v != null) {
                    v.set(prep, j + 1);
                    j++;
                }
            }
            ResultSet rs = prep.executeQuery();
            return new LinkedCursor(table, rs, session);
        } catch (SQLException e) {
            throw wrapException(sql, e);
        }
    }

    public int getLookupCost(int rowCount) {
        for (int i = 0, j = 1;; i++) {
            j *= 10;
            if (j > rowCount) {
                return i + 1;
            }
        }
    }

    public double getCost(Session session, int[] masks) throws SQLException {
        return 100 + getCostRangeIndex(masks, rowCount + Constants.COST_ROW_OFFSET);
    }

    public void remove(Session session) throws SQLException {
    }

    public void truncate(Session session) throws SQLException {
    }

    public void checkRename() throws SQLException {
        throw Message.getUnsupportedException();
    }

    public boolean needRebuild() {
        return false;
    }

    public boolean canGetFirstOrLast() {
        return false;
    }

    public SearchRow findFirstOrLast(Session session, boolean first) throws SQLException {
        // TODO optimization: could get the first or last value (in any case;
        // maybe not optimized)
        throw Message.getUnsupportedException();
    }

    public void remove(Session session, Row row) throws SQLException {
        StringBuffer buff = new StringBuffer("DELETE FROM ");
        buff.append(targetTableName);
        buff.append(" WHERE ");
        for (int i = 0; i < row.getColumnCount(); i++) {
            if (i > 0) {
                buff.append("AND ");
            }
            buff.append(table.getColumn(i).getSQL());
            Value v = row.getValue(i);
            if (isNull(v)) {
                buff.append(" IS NULL ");
            } else {
                buff.append("=? ");
            }
        }
        String sql = buff.toString();
        try {
            PreparedStatement prep = link.getPreparedStatement(sql);
            for (int i = 0, j = 0; i < row.getColumnCount(); i++) {
                Value v = row.getValue(i);
                if (!isNull(v)) {
                    v.set(prep, j + 1);
                    j++;
                }
            }
            int count = prep.executeUpdate();
            rowCount -= count;
        } catch (SQLException e) {
            throw wrapException(sql, e);
        }
    }

    public void update(Session session, Row oldRow, Row newRow) throws SQLException {
        StringBuffer buff = new StringBuffer("UPDATE ");
        buff.append(targetTableName).append(" SET ");
        for (int i = 0; i < newRow.getColumnCount(); i++) {
            if (i > 0) {
                buff.append(", ");
            }
            buff.append(table.getColumn(i).getSQL()).append("=?");
        }
        buff.append(" WHERE ");
        for (int i = 0; i < oldRow.getColumnCount(); i++) {
            if (i > 0) {
                buff.append("AND ");
            }
            buff.append(table.getColumn(i).getSQL());
            Value v = oldRow.getValue(i);
            if (isNull(v)) {
                buff.append(" IS NULL ");
            } else {
                buff.append("=? ");
            }
        }
        String sql = buff.toString();
        try {
            int j = 1;
            PreparedStatement prep = link.getPreparedStatement(sql);
            for (int i = 0; i < newRow.getColumnCount(); i++) {
                newRow.getValue(i).set(prep, j);
                j++;
            }
            for (int i = 0; i < oldRow.getColumnCount(); i++) {
                Value v = oldRow.getValue(i);
                if (!isNull(v)) {
                    v.set(prep, j);
                    j++;
                }
            }
            int count = prep.executeUpdate();
            // this has no effect but at least it allows to debug the update count
            rowCount = rowCount + count - count;
        } catch (SQLException e) {
            throw wrapException(sql, e);
        }
    }

    private SQLException wrapException(String sql, SQLException e) {
        return Message.getSQLException(ErrorCode.ERROR_ACCESSING_LINKED_TABLE_2, new String[] { sql, e.toString() }, e);
    }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一区二区三区视频在线观看| 香蕉成人伊视频在线观看| 美洲天堂一区二卡三卡四卡视频 | 成人app软件下载大全免费| 最新国产成人在线观看| 久久综合久久鬼色中文字| 欧美人动与zoxxxx乱| 97se亚洲国产综合自在线| 韩国欧美国产1区| 日本女优在线视频一区二区| 国产免费久久精品| 26uuu国产电影一区二区| 91麻豆成人久久精品二区三区| 国产很黄免费观看久久| 国内精品伊人久久久久av影院| 色美美综合视频| 99国产精品久久久| 欧美午夜免费电影| 欧美zozozo| 国产精品久久三区| 亚洲成人一区二区| 精品在线亚洲视频| 99久久99精品久久久久久 | 亚洲国产成人av网| 蜜臀av性久久久久蜜臀aⅴ| 国产乱国产乱300精品| 97国产一区二区| 91精品久久久久久久91蜜桃| 国产日韩欧美精品一区| 一区二区日韩电影| 黄色精品一二区| 91免费版pro下载短视频| 欧美日产国产精品| 中文字幕av一区二区三区高| 日本欧美肥老太交大片| 精品一区二区三区在线观看 | 亚洲国产美女搞黄色| 蜜桃av一区二区三区电影| 成人午夜激情片| 欧美日韩成人综合在线一区二区| 久久午夜国产精品| 天天色天天爱天天射综合| 国产91精品久久久久久久网曝门| 欧美喷水一区二区| 亚洲日本青草视频在线怡红院| 午夜精品一区二区三区三上悠亚| 国产成人亚洲精品青草天美| 欧美剧在线免费观看网站 | 免费观看一级特黄欧美大片| 不卡视频在线看| 久久婷婷国产综合国色天香| 五月婷婷综合激情| 色伊人久久综合中文字幕| 久久影视一区二区| 免费看黄色91| 欧美午夜影院一区| 亚洲精品国产品国语在线app| 国产一区二区精品久久| 91精品国产综合久久久久久漫画| 尤物av一区二区| 99久久精品免费观看| 久久久噜噜噜久噜久久综合| 免费观看久久久4p| 欧美一二三区精品| 日韩成人av影视| 欧美丝袜丝交足nylons| 一区二区三区视频在线观看| 91伊人久久大香线蕉| 国产精品久久福利| 99精品国产一区二区三区不卡| 久久久久久久免费视频了| 捆绑调教一区二区三区| 日韩免费成人网| 日韩不卡一区二区三区 | 国产伦精品一区二区三区在线观看| 欧美日韩国产综合一区二区| 亚洲一区二区三区激情| 欧美日韩亚洲综合一区二区三区| 一区二区三区在线视频免费观看| 99久久精品国产一区二区三区| 国产精品国产三级国产aⅴ中文| 成人免费高清视频在线观看| 国产精品入口麻豆原神| 99视频一区二区| 亚洲精品国产成人久久av盗摄| 色爱区综合激月婷婷| 亚洲国产日韩av| 欧美一区二区三区色| 久久国产日韩欧美精品| 久久久久97国产精华液好用吗| 国产福利91精品| 亚洲人成在线观看一区二区| 欧美日韩国产一二三| 蜜臀av一区二区在线观看| 久久九九99视频| 91一区二区三区在线观看| 亚洲一区免费视频| 精品久久久网站| 成人一区二区三区视频| 一二三区精品视频| 欧美本精品男人aⅴ天堂| 国产91丝袜在线观看| 亚洲视频你懂的| 91精品国产一区二区三区蜜臀| 国产一区二区免费视频| 亚洲欧美视频在线观看视频| 欧美一区二区视频在线观看2022| 国产精品一区不卡| 亚洲午夜免费福利视频| 精品国产123| 色偷偷88欧美精品久久久| 日韩电影在线一区二区三区| 国产三级精品视频| 欧美色图免费看| 国产91高潮流白浆在线麻豆| 亚洲成人久久影院| 久久精品免费在线观看| 欧美网站大全在线观看| 国产91精品在线观看| 日本亚洲一区二区| 国产精品不卡在线| 欧美r级在线观看| 欧美日韩免费不卡视频一区二区三区| 精品在线播放午夜| 丝袜国产日韩另类美女| 亚洲色图20p| 欧美激情一区三区| 精品国产1区二区| 制服.丝袜.亚洲.另类.中文| av在线综合网| 国产a区久久久| 精品一区在线看| 日韩av中文字幕一区二区三区| 亚洲天堂精品在线观看| 日本一区二区视频在线| 日韩欧美一二区| 欧美日韩成人高清| 欧美亚洲国产一区二区三区| 不卡的电视剧免费网站有什么| 国模无码大尺度一区二区三区| 日韩电影在线一区| 日韩精品一级中文字幕精品视频免费观看| 国产精品久久久久影院老司| 国产亚洲一区字幕| 国产日产精品1区| 国产清纯在线一区二区www| 精品乱人伦小说| 日韩一级精品视频在线观看| 欧美久久久久久久久| 欧美日韩不卡一区| 69堂亚洲精品首页| 欧美日韩黄色一区二区| 欧美日韩你懂的| 欧美精品在线视频| 欧美一区二区黄| 日韩女优电影在线观看| 日韩欧美久久一区| 欧美精品一区视频| 国产三级精品视频| 亚洲人吸女人奶水| 亚洲va国产va欧美va观看| 日韩av一区二区在线影视| 日韩av不卡在线观看| 激情亚洲综合在线| 高清不卡一区二区| 91麻豆国产精品久久| 欧美日韩国产片| 日韩精品在线看片z| 国产欧美一区二区精品秋霞影院| 国产日本欧美一区二区| 国产精品久久久久久久蜜臀 | 久久网站热最新地址| 国产精品每日更新| 亚洲精选一二三| 日韩av午夜在线观看| 国产呦精品一区二区三区网站| 成人黄色777网| 欧美日韩中文一区| 久久影院午夜片一区| 亚洲激情一二三区| 精品一区二区影视| 色综合一个色综合亚洲| 91精品国产91久久久久久一区二区 | 国产一级精品在线| 一本大道久久a久久精二百| 91精品中文字幕一区二区三区| 久久精品综合网| 亚洲一区二区精品久久av| 韩国v欧美v亚洲v日本v| 91视视频在线观看入口直接观看www | 亚洲日本免费电影| 日韩不卡一二三区| 不卡一区二区在线| 欧美一级电影网站| 一区二区三区在线不卡| 国产一区二区三区| 日韩亚洲欧美中文三级| 亚洲精品视频在线看| 国产精品77777| 欧美一区二区三区四区高清|