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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? statement.java

?? jsp數(shù)據(jù)庫(kù)系統(tǒng)
?? JAVA
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
/*
   Copyright (C) 2002 MySQL AB

      This program is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published by
      the Free Software Foundation; either version 2 of the License, or
      (at your option) any later version.

      This program is distributed in the hope that it will be useful,
      but WITHOUT ANY WARRANTY; without even the implied warranty of
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      GNU General Public License for more details.

      You should have received a copy of the GNU General Public License
      along with this program; if not, write to the Free Software
      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

 */
package com.mysql.jdbc;

import java.io.UnsupportedEncodingException;

import java.sql.SQLException;
import java.sql.SQLWarning;
import java.sql.Types;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;


/**
 * A Statement object is used for executing a static SQL statement and
 * obtaining the results produced by it.
 * 
 * <p>
 * Only one ResultSet per Statement can be open at any point in time.
 * Therefore, if the reading of one ResultSet is interleaved with the reading
 * of another, each must have been generated by different Statements.  All
 * statement execute methods implicitly close a statement's current ResultSet
 * if an open one exists.
 * </p>
 *
 * @author Mark Matthews
 * @version $Id: Statement.java,v 1.20.2.17 2004/02/13 22:31:25 mmatthew Exp $
 *
 * @see java.sql.Statement
 * @see ResultSet
 */
public class Statement implements java.sql.Statement {
    /** The connection that created us */
    protected Connection connection = null;

    /** Holds batched commands */
    protected List batchedArgs;

    /** List of currently-open ResultSets */
    protected List openResults = new ArrayList();

    /** The next result set */
    protected ResultSet nextResults = null;

    /** The current results */
    protected ResultSet results = null;

    /** The warnings chain. */
    protected SQLWarning warningChain = null;
    
    /** The pending warnings chain */
    protected SQLWarning pendingWarnings = null;

    /** The character converter to use (if available) */
    protected SingleByteCharsetConverter charConverter = null;

    /** The character encoding to use (if available) */
    protected String charEncoding = null;

    /** The catalog in use */
    protected String currentCatalog = null;

    /** Should we process escape codes? */
    protected boolean doEscapeProcessing = true;

    /** Has this statement been closed? */
    protected boolean isClosed = false;

    /** Has someone changed this for this statement? */
    protected boolean maxRowsChanged = false;

    /** Are we in pedantic mode? */
    protected boolean pedantic = false;

    /** The max field size for this statement */
    protected int maxFieldSize = MysqlIO.getMaxBuf();

    /**
     * The maximum number of rows to return for this statement (-1 means _all_
     * rows)
     */
    protected int maxRows = -1;

    /** The concurrency for this result set (updatable or not) */
    protected int resultSetConcurrency = 0;

    /** The type of this result set (scroll sensitive or in-sensitive) */
    protected int resultSetType = 0;

    /** The timeout for a query */
    protected int timeout = 0;

    /** The auto_increment value for the last insert */
    protected long lastInsertId = -1;

    /** The update count for this statement */
    protected long updateCount = -1;

    /** The number of rows to fetch at a time (currently ignored) */
    private int fetchSize = 0;

    /** Does the server support CAST/CONVERT? */
    private boolean serverSupportsConvertFn;
    
    /**
     * Constructor for a Statement.
     *
     * @param c the Connection instantation that creates us
     * @param catalog the database name in use when we were created
     *
     * @throws SQLException if an error occurs.
     */
    public Statement(Connection c, String catalog) throws SQLException {
        if (Driver.TRACE) {
            Object[] args = { c };
            Debug.methodCall(this, "constructor", args);
        }

        if ((c == null) || ((com.mysql.jdbc.Connection) c).isClosed()) {
            throw new SQLException("Connection is closed.", "08003");
        }

        this.connection = c;
        this.currentCatalog = catalog;
        this.pedantic = this.connection.isPedantic();
        this.serverSupportsConvertFn = this.connection.getIO().versionMeetsMinimum(4, 0, 2);

        //
        // Adjust, if we know it
        //
        if (connection != null) {
            maxFieldSize = connection.getMaxAllowedPacket();
        }

        if (this.connection.useUnicode()) {
            this.charEncoding = connection.getEncoding();
            this.charConverter = this.connection.getCharsetConverter(this.charEncoding); 
        }
        
        int maxRowsConn = this.connection.getMaxRows();
        
        if (maxRowsConn != -1) {
        	setMaxRows(maxRowsConn);
        }
    }

    /**
     * JDBC 2.0  Return the Connection that produced the Statement.
     *
     * @return the Connection that produced the Statement
     *
     * @throws SQLException if an error occurs
     */
    public java.sql.Connection getConnection() throws SQLException {
        return (java.sql.Connection) connection;
    }

    /**
     * setCursorName defines the SQL cursor name that will be used by
     * subsequent execute methods.  This name can then be used in SQL
     * positioned update/delete statements to identify the current row in the
     * ResultSet generated by this statement.  If a database doesn't support
     * positioned update/delete, this method is a no-op.
     * 
     * <p>
     * <b>Note:</b> This MySQL driver does not support cursors.
     * </p>
     *
     * @param name the new cursor name
     *
     * @exception java.sql.SQLException if a database access error occurs
     */
    public void setCursorName(String name) throws java.sql.SQLException {
        if (Driver.TRACE) {
            Object[] args = { name };
            Debug.methodCall(this, "setCursorName", args);
        }

        // No-op
    }

    /**
     * If escape scanning is on (the default), the driver will do escape
     * substitution before sending the SQL to the database.
     *
     * @param enable true to enable; false to disable
     *
     * @exception java.sql.SQLException if a database access error occurs
     */
    public void setEscapeProcessing(boolean enable)
        throws java.sql.SQLException {
        if (Driver.TRACE) {
            Object[] args = { new Boolean(enable) };
            Debug.methodCall(this, "setEscapeProcessing", args);
        }

        doEscapeProcessing = enable;
    }

    //--------------------------JDBC 2.0-----------------------------

    /**
     * JDBC 2.0 Give a hint as to the direction in which the rows in a result
     * set will be processed. The hint applies only to result sets created
     * using this Statement object.  The default value is
     * ResultSet.FETCH_FORWARD.
     *
     * @param direction the initial direction for processing rows
     *
     * @exception SQLException if a database-access error occurs or direction
     *            is not one of ResultSet.FETCH_FORWARD,
     *            ResultSet.FETCH_REVERSE, or ResultSet.FETCH_UNKNOWN
     */
    public void setFetchDirection(int direction) throws SQLException {
        switch (direction) {
        case java.sql.ResultSet.FETCH_FORWARD:
        case java.sql.ResultSet.FETCH_REVERSE:
        case java.sql.ResultSet.FETCH_UNKNOWN:
            break;

        default:
            throw new SQLException("Illegal value for setFetchDirection()",
                SQLError.SQL_STATE_ILLEGAL_ARGUMENT);
        }
    }

    /**
     * JDBC 2.0 Determine the fetch direction.
     *
     * @return the default fetch direction
     *
     * @exception SQLException if a database-access error occurs
     */
    public int getFetchDirection() throws SQLException {
        return java.sql.ResultSet.FETCH_FORWARD;
    }

    /**
     * JDBC 2.0 Give the JDBC driver a hint as to the number of rows that
     * should  be fetched from the database when more rows are needed.  The
     * number  of rows specified only affects result sets created using this
     * statement. If the value specified is zero, then the hint is ignored.
     * The default value is zero.
     *
     * @param rows the number of rows to fetch
     *
     * @exception SQLException if a database-access error occurs, or the
     *            condition 0 &lt;= rows &lt;= this.getMaxRows() is not
     *            satisfied.
     */
    public void setFetchSize(int rows) throws SQLException {
        if (((rows < 0) && (rows != Integer.MIN_VALUE))
                || ((maxRows != 0) && (maxRows != -1)
                && (rows > this.getMaxRows()))) {
            throw new SQLException("Illegal value for setFetchSize()", SQLError.SQL_STATE_ILLEGAL_ARGUMENT);
        }

        fetchSize = rows;
    }

    /**
     * JDBC 2.0 Determine the default fetch size.
     *
     * @return the number of rows to fetch at a time
     *
     * @throws SQLException if an error occurs
     */
    public int getFetchSize() throws SQLException {
        return fetchSize;
    }

    /**
     * DOCUMENT ME!
     *
     * @return DOCUMENT ME!
     *
     * @throws SQLException DOCUMENT ME!
     */
    public java.sql.ResultSet getGeneratedKeys() throws SQLException {
        Field[] fields = new Field[1];
        fields[0] = new Field("", "GENERATED_KEY", Types.BIGINT, 17);

        ArrayList rowSet = new ArrayList();

        long beginAt = getLastInsertID();
        int numKeys = getUpdateCount();

        String serverInfo = this.results.getServerInfo();

		// 
		// Only parse server info messages for 'REPLACE'
		// queries
		//
		
        if ((numKeys > 0) 
        		&& this.results.getFirstCharOfQuery() == 'R'
        		&& (serverInfo != null)
                && (serverInfo.length() > 0)) {
            numKeys = getRecordCountFromInfo(serverInfo);
        }

        if ((beginAt > 0) && (numKeys > 0)) {
            for (int i = 0; i < numKeys; i++) {
                byte[][] row = new byte[1][];
                row[0] = Long.toString(beginAt++).getBytes();
                rowSet.add(row);
            }
        }

        return new com.mysql.jdbc.ResultSet(currentCatalog, fields,
            new RowDataStatic(rowSet), connection);
    }

    /**
     * getLastInsertID returns the value of the auto_incremented key after an
     * executeQuery() or excute() call.
     * 
     * <p>
     * This gets around the un-threadsafe behavior of "select LAST_INSERT_ID()"
     * which is tied to the Connection that created this Statement, and
     * therefore could have had many INSERTS performed before one gets a
     * chance to call "select LAST_INSERT_ID()".
     * </p>
     *
     * @return the last update ID.
     */
    public long getLastInsertID() {
        if (Driver.TRACE) {
            Object[] args = new Object[0];
            Debug.methodCall(this, "getLastInsertID", args);
        }

        return lastInsertId;
    }

    /**
     * getLongUpdateCount returns the current result as an update count, if the
     * result is a ResultSet or there are no more results, -1 is returned.  It
     * should only be called once per result.
     * 
     * <p>
     * This method returns longs as MySQL server versions newer than  3.22.4
     * return 64-bit values for update counts
     * </p>
     *
     * @return the current update count.
     */
    public long getLongUpdateCount() {
        if (Driver.TRACE) {
            Object[] args = new Object[0];
            Debug.methodCall(this, "getLongUpdateCount", args);
        }

        if (results == null) {
            return -1;
        }

        if (results.reallyResult()) {
            return -1;
        }

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一二三专区| 欧美精品乱码久久久久久按摩| 韩国av一区二区三区四区| 欧美aaa在线| 国产麻豆精品95视频| 国产69精品久久久久毛片| 成人在线一区二区三区| 99精品国产一区二区三区不卡| 91蜜桃在线观看| 欧美日韩精品一区视频| 精品理论电影在线| 日韩一区二区在线看片| 26uuu久久综合| 国产精品免费视频一区| 樱花影视一区二区| 五月天久久比比资源色| 麻豆久久久久久| 高清视频一区二区| 91欧美激情一区二区三区成人| 欧美日韩亚洲不卡| 欧美sm极限捆绑bd| 国产精品久久久久精k8| 亚洲美女免费视频| 欧美aaaaaa午夜精品| 国产+成+人+亚洲欧洲自线| 在线免费观看不卡av| 日韩免费高清电影| 中文字幕不卡在线观看| 亚洲一区二区三区四区的| 美女诱惑一区二区| 国产成人精品三级麻豆| 91国偷自产一区二区开放时间 | 国产精选一区二区三区| 99re在线精品| 日韩一区二区高清| 99久久777色| 婷婷久久综合九色综合伊人色| 成人av电影免费在线播放| 亚洲一区二区三区四区中文字幕| 亚洲一区在线视频| 国产成人精品午夜视频免费| 91原创在线视频| 在线不卡的av| 亚洲成人三级小说| 色天使久久综合网天天| 亚洲视频一区二区在线| 成人一区二区三区中文字幕| 91精品国产综合久久久蜜臀粉嫩| 亚洲成人动漫在线免费观看| 日日噜噜夜夜狠狠视频欧美人 | 日韩福利电影在线| 在线视频一区二区三区| 亚洲欧美在线视频观看| 不卡av在线免费观看| 国产精品麻豆网站| 看片的网站亚洲| 久久久久久9999| av不卡在线播放| 亚洲国产aⅴ成人精品无吗| 欧美巨大另类极品videosbest| 蜜臀va亚洲va欧美va天堂| 日本一二三四高清不卡| 欧美精品欧美精品系列| 老司机精品视频导航| 欧美午夜精品一区二区三区| 五月天婷婷综合| 国产精品国产a级| 日韩精品一区二区三区在线观看| 国产精品一品二品| 午夜精品福利久久久| 欧美激情资源网| 日韩精品一区二区三区中文不卡| 成人免费黄色在线| 日韩视频永久免费| 91网站最新地址| 秋霞电影网一区二区| 久久精品夜色噜噜亚洲a∨ | 色播五月激情综合网| 国产精品影视网| 美女视频黄免费的久久| 亚洲高清一区二区三区| 欧美日韩国产高清一区二区| 视频一区在线播放| 一区二区三区在线观看视频| 久久精品欧美一区二区三区不卡 | 国内精品在线播放| 亚洲国产视频一区| 自拍偷拍亚洲综合| 中文字幕一区二区三区四区| 精品日韩av一区二区| 色综合色狠狠天天综合色| 国产成人免费视频一区| 国产麻豆视频精品| 国产一区激情在线| 国产91精品免费| 不卡视频在线看| 色综合久久久久久久久| 色狠狠色狠狠综合| 欧美综合欧美视频| 色婷婷久久一区二区三区麻豆| 欧美激情综合五月色丁香| 欧美成人女星排名| 精品成人一区二区三区四区| 久久国产视频网| 国产午夜精品久久久久久免费视| 欧美mv日韩mv亚洲| 精品播放一区二区| 日韩欧美高清在线| 91精品福利在线一区二区三区| 91行情网站电视在线观看高清版| 在线观看国产精品网站| 色综合激情久久| 欧美视频在线观看一区二区| xfplay精品久久| 日韩精品一级二级| av影院午夜一区| 日本一区二区在线不卡| 免费观看在线综合| 欧美日高清视频| 亚洲午夜免费视频| 日本久久电影网| 欧美成人性福生活免费看| 国产精品女同一区二区三区| 老色鬼精品视频在线观看播放| 亚洲午夜精品久久久久久久久| 成人免费看片app下载| 久久综合色之久久综合| 美女一区二区久久| 日韩三级伦理片妻子的秘密按摩| 亚洲18影院在线观看| 精品视频色一区| 亚洲线精品一区二区三区| bt7086福利一区国产| 久久精品一区八戒影视| 国产精品资源在线看| 日韩精品一区二| 日韩国产欧美三级| www.欧美色图| 久久久久久久综合日本| 免费观看在线综合色| 欧美日韩国产一级| 亚洲一区二区在线观看视频| 色综合久久久网| 国产精品国产三级国产a| 精品一区二区三区日韩| 欧美成人三级电影在线| 美女一区二区三区在线观看| 久久综合给合久久狠狠狠97色69| 成人18精品视频| 午夜私人影院久久久久| 国产欧美一区二区精品性| 99国产欧美久久久精品| 亚洲欧洲三级电影| 99免费精品视频| 亚洲乱码日产精品bd| 欧美亚洲国产怡红院影院| 亚洲福利视频三区| 在线播放一区二区三区| 日韩av一级片| 欧美精品一区二区三区高清aⅴ| 久久疯狂做爰流白浆xx| 精品人伦一区二区色婷婷| 国产一区91精品张津瑜| 精品国产一区二区三区久久久蜜月 | 精品亚洲国产成人av制服丝袜 | 韩国女主播成人在线观看| 久久人人爽爽爽人久久久| caoporm超碰国产精品| 首页综合国产亚洲丝袜| 国产午夜精品一区二区| 欧美手机在线视频| 成人免费观看视频| 日韩影院精彩在线| 亚洲天堂av一区| 精品国产人成亚洲区| 欧美日韩一区二区在线观看| 东方aⅴ免费观看久久av| 亚洲成人第一页| 自拍偷拍欧美激情| 久久免费视频一区| 欧美一区二区免费视频| 91丨九色丨国产丨porny| 国产乱人伦偷精品视频免下载 | 亚洲色图视频免费播放| 精品成a人在线观看| 国产成人精品三级麻豆| 欧美一级一区二区| 91行情网站电视在线观看高清版| www.在线成人| 91麻豆免费看| 99久久免费视频.com| a亚洲天堂av| 欧美性猛交xxxxxx富婆| 欧美色爱综合网| 欧美精品国产精品| 欧美一级欧美三级在线观看| 欧美电影免费观看高清完整版在线观看| 亚洲精品国产高清久久伦理二区| 成人一区二区三区视频在线观看| 亚洲一区二区三区四区在线免费观看|