⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 blob.java

📁 SearchPathServer
💻 JAVA
字号:
/*
 * MM JDBC Drivers for MySQL
 *
 * $Id: Blob.java,v 1.2 2002/04/21 03:03:46 mark_matthews Exp $
 *
 * Copyright (C) 1998 Mark Matthews <mmatthew@worldserver.com>
 * 
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library 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
 * Library General Public License for more details.
 * 
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA  02111-1307, USA.
 *
 * See the COPYING file located in the top-level-directory of
 * the archive of this library for complete text of license.
 *
 * Some portions:
 *
 * Copyright (c) 1996 Bradley McLean / Jeffrey Medeiros
 * Modifications Copyright (c) 1996/1997 Martin Rode
 * Copyright (c) 1997 Peter T Mount
 */

package com.mysql.jdbc.jdbc2;

import java.io.ByteArrayInputStream;
import java.sql.SQLException;

/**
 * The representation (mapping) in the JavaTM programming language 
 * of an SQL BLOB value. An SQL BLOB is a built-in type that stores 
 * a Binary Large Object as a column value in a row of a database 
 * table. The driver implements Blob using an SQL locator(BLOB), 
 * which means that a Blob object contains a logical pointer to the 
 * SQL BLOB data rather than the data itself. A Blob object is valid 
 * for the duration of the transaction in which is was created. 
 * 
 * Methods in the interfaces ResultSet, CallableStatement, and 
 * PreparedStatement, such as getBlob and setBlob allow a programmer 
 * to access an SQL BLOB value. The Blob interface provides methods 
 * for getting the length of an SQL BLOB (Binary Large Object) value, 
 * for materializing a BLOB value on the client, and for determining 
 * the position of a pattern of bytes within a BLOB value. 
 * 
 * This class is new in the JDBC 2.0 API. 
 */

public class Blob implements java.sql.Blob {
  //
  // This is a real brain-dead implementation of BLOB. Once I add
  // streamability to the I/O for MySQL this will be more efficiently
  // implemented (except for the position() method, ugh).
  //

  /** The binary data that makes up this BLOB */

  byte[] binaryData = null;


  Blob(byte[] data) {
    binaryData = data;
  }
    
  /**
   * Retrieves the BLOB designated by this Blob instance
   * as a stream.
   */

  public java.io.InputStream getBinaryStream() throws SQLException {
    return new ByteArrayInputStream(binaryData);
  }

  /**
   * Returns as an array of bytes, part or all of the BLOB
   * value that this Blob object designates.
   */

  public byte[] getBytes(long pos, int length) throws SQLException
  {
    byte[] newData = new byte[length];
    
    System.arraycopy(binaryData, (int)(pos - 1), newData, 0, length);

    return newData;
  }

  /**
   * Returns the number of bytes in the BLOB value designated
   * by this Blob object.
   */

  public long length() throws SQLException
  {
    return binaryData.length;
  }

  public long position(java.sql.Blob pattern, long start) throws SQLException
  {
    return position(pattern.getBytes(0, (int)pattern.length()), start);
  }

  public long position(byte[] pattern, long start) throws SQLException
  {
    throw new SQLException("Not implemented");
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -