java.sql.PreparedStatement#setClob ( )源码实例Demo

下面列出了java.sql.PreparedStatement#setClob ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: spring4-understanding   文件: OracleLobHandler.java
@Override
public void setClobAsCharacterStream(
		PreparedStatement ps, int paramIndex, final Reader characterStream, int contentLength)
	throws SQLException {

	if (characterStream != null) {
		Clob clob = (Clob) createLob(ps, true, new LobCallback() {
			@Override
			public void populateLob(Object lob) throws Exception {
				Method methodToInvoke = lob.getClass().getMethod("getCharacterOutputStream", (Class[]) null);
				Writer writer = (Writer) methodToInvoke.invoke(lob, (Object[]) null);
				FileCopyUtils.copy(characterStream, writer);
			}
		});
		ps.setClob(paramIndex, clob);
		if (logger.isDebugEnabled()) {
			logger.debug("Set character stream for Oracle CLOB with length " + clob.length());
		}
	}
	else {
		ps.setClob(paramIndex, (Clob) null);
		logger.debug("Set Oracle CLOB to null");
	}
}
 
源代码2 项目: spliceengine   文件: SpliceClobIT.java
@Test
public void testClob() throws Exception {
    String clobString = "A TEST OF CLOB INSERT...";
    PreparedStatement ps = conn.prepareStatement("INSERT INTO documents VALUES (?, ?)");
    Clob clob = conn.createClob();
    clob.setString(1,clobString);
    ps.setInt(1, 100);
    ps.setClob(2, clob);
    ps.execute();

    ps = conn.prepareStatement("SELECT c FROM documents where id=100");
    ResultSet rs = ps.executeQuery();
    while (rs.next()) {
        String s = rs.getString(1);
        Assert.assertEquals(s, clobString, s);
    }
}
 
源代码3 项目: effectivejava   文件: TemporaryLobCreator.java
@Override
public void setClobAsCharacterStream(
		PreparedStatement ps, int paramIndex, Reader characterStream, int contentLength)
		throws SQLException {

	Clob clob = ps.getConnection().createClob();
	try {
		FileCopyUtils.copy(characterStream, clob.setCharacterStream(1));
	}
	catch (IOException ex) {
		throw new DataAccessResourceFailureException("Could not copy into LOB stream", ex);
	}

	this.temporaryClobs.add(clob);
	ps.setClob(paramIndex, clob);

	if (logger.isDebugEnabled()) {
		logger.debug(characterStream != null ?
				"Copied character stream into temporary CLOB with length " + contentLength :
				"Set CLOB to null");
	}
}
 
源代码4 项目: gemfirexd-oss   文件: XPLAINResultSetDescriptor.java
public static final void setStatementParameters(Connection conn, PreparedStatement ps,
    UUID stmt_id, 
    StringBuilder xmlFragment) throws SQLException {
  ps.setString(1, (stmt_id != null ? stmt_id.toString() : null));
  final Clob c = conn.createClob();
  try {
    c.setCharacterStream(1).write(xmlFragment.toString());
  } catch (IOException e) {
    if (GemFireXDUtils.TracePlanAssertion) {
      SanityManager.DEBUG_PRINT(GfxdConstants.TRACE_PLAN_ASSERTION,
          "couldn't set clob stream.", e);
    }
    else if (GemFireXDUtils.TracePlanGeneration) {
      SanityManager.DEBUG_PRINT(GfxdConstants.TRACE_PLAN_GENERATION,
          "couldn't set clob stream.");
    }
  }
  ps.setClob(2, c);
}
 
源代码5 项目: gemfirexd-oss   文件: LobStreamsTest.java
/**
 * Tests the ClobWriter.write(String str) method
 **/
public void testClobCharacterWrite1ParamString() throws Exception
{
    PreparedStatement stmt3 = prepareStatement(
        "SELECT c FROM testBlobX1 WHERE a = 1");
    ResultSet rs3 = stmt3.executeQuery();
    rs3.next();
    Clob clob = rs3.getClob(1);
    assertTrue("FAIL -- clob is NULL", clob != null);
    Writer clobWriter = clob.setCharacterStream(1L);
    clobWriter.write(unicodeTestString);
    clobWriter.close();

    PreparedStatement stmt4 = prepareStatement(
        "UPDATE testBlobX1 SET c = ? WHERE a = 1");
    stmt4.setClob(1,  clob);
    stmt4.executeUpdate();
    stmt4.close();

    rs3.close();
    rs3 = stmt3.executeQuery();
    assertTrue("FAIL -- clob not found", rs3.next());
    long new_length = rs3.getClob(1).length();
    assertEquals("FAIL -- wrong clob length", unicodeTestString.length(), new_length);

    // Check contents ...
    Reader lStream = rs3.getClob(1).getCharacterStream();
    assertTrue("FAIL - Clob and buffer contents do not match",
            compareClobReader2CharArray(
                unicodeTestString.toCharArray(),
                lStream));

    lStream.close();
    rs3.close();
    stmt3.close();
}
 
源代码6 项目: spring-analysis-note   文件: DefaultLobHandler.java
@Override
public void setClobAsString(PreparedStatement ps, int paramIndex, @Nullable String content)
		throws SQLException {

	if (streamAsLob) {
		if (content != null) {
			ps.setClob(paramIndex, new StringReader(content), content.length());
		}
		else {
			ps.setClob(paramIndex, (Clob) null);
		}
	}
	else if (wrapAsLob) {
		if (content != null) {
			ps.setClob(paramIndex, new PassThroughClob(content));
		}
		else {
			ps.setClob(paramIndex, (Clob) null);
		}
	}
	else {
		ps.setString(paramIndex, content);
	}
	if (logger.isDebugEnabled()) {
		logger.debug(content != null ? "Set string for CLOB with length " + content.length() :
				"Set CLOB to null");
	}
}
 
源代码7 项目: effectivejava   文件: DefaultLobHandler.java
@Override
public void setClobAsCharacterStream(
		PreparedStatement ps, int paramIndex, Reader characterStream, int contentLength)
		throws SQLException {

	if (streamAsLob) {
		if (characterStream != null) {
			ps.setClob(paramIndex, characterStream, contentLength);
		}
		else {
			ps.setClob(paramIndex, (Clob) null);
		}
	}
	else if (wrapAsLob) {
		if (characterStream != null) {
			ps.setClob(paramIndex, new PassThroughClob(characterStream, contentLength));
		}
		else {
			ps.setClob(paramIndex, (Clob) null);
		}
	}
	else {
		ps.setCharacterStream(paramIndex, characterStream, contentLength);
	}
	if (logger.isDebugEnabled()) {
		logger.debug(characterStream != null ? "Set character stream for CLOB with length " + contentLength :
				"Set CLOB to null");
	}
}
 
源代码8 项目: java-technology-stack   文件: DefaultLobHandler.java
@Override
public void setClobAsString(PreparedStatement ps, int paramIndex, @Nullable String content)
		throws SQLException {

	if (streamAsLob) {
		if (content != null) {
			ps.setClob(paramIndex, new StringReader(content), content.length());
		}
		else {
			ps.setClob(paramIndex, (Clob) null);
		}
	}
	else if (wrapAsLob) {
		if (content != null) {
			ps.setClob(paramIndex, new PassThroughClob(content));
		}
		else {
			ps.setClob(paramIndex, (Clob) null);
		}
	}
	else {
		ps.setString(paramIndex, content);
	}
	if (logger.isDebugEnabled()) {
		logger.debug(content != null ? "Set string for CLOB with length " + content.length() :
				"Set CLOB to null");
	}
}
 
源代码9 项目: gemfirexd-oss   文件: TradeBuyOrderDMLStmtJson.java
protected void addBatchInsert(PreparedStatement stmt, int oid, int cid, int sid, int qty,
    String status, Timestamp time, BigDecimal bid, int tid, boolean isPut) throws SQLException {
  
  JSONObject json = new JSONObject();
  String jsonLog ="";
  
  if (SQLTest.hasJSON &&  ! SQLHelper.isDerbyConn(stmt.getConnection()) ) {
         json = getJSONObject(oid,cid,sid,qty,status,time,bid,tid);
         jsonLog = ",JSON_DETAILS: " +json.toJSONString();
  }
  
  Log.getLogWriter().info( (SQLHelper.isDerbyConn(stmt.getConnection())? "Derby - " :"gemfirexd - "  ) +  (isPut ? "putting " : "inserting ") + " into trade.buyorders with data OID:" + oid +
      ",CID:"+ cid + ",SID:" + sid + ",QTY:" + qty + ",STATUS:" + status +
      ",TIME:"+ time + ",BID:" + bid + ",TID:" + tid + jsonLog);
  
  stmt.setInt(1, oid);
  stmt.setInt(2, cid);
  stmt.setInt(3, sid);
  stmt.setInt(4, qty);
  stmt.setBigDecimal(5, bid);
  stmt.setTimestamp(6, time);
  stmt.setString(7, status);       
  stmt.setInt(8, tid);
  if (SQLTest.hasJSON &&  ! SQLHelper.isDerbyConn(stmt.getConnection()) ) {  Clob jsonClob = stmt.getConnection().createClob();
  jsonClob.setString(1, json.toJSONString());
  stmt.setClob(9, jsonClob); }
  stmt.addBatch();
}
 
源代码10 项目: lams   文件: DefaultLobHandler.java
@Override
public void setClobAsString(PreparedStatement ps, int paramIndex, String content)
		throws SQLException {

	if (streamAsLob) {
		if (content != null) {
			ps.setClob(paramIndex, new StringReader(content), content.length());
		}
		else {
			ps.setClob(paramIndex, (Clob) null);
		}
	}
	else if (wrapAsLob) {
		if (content != null) {
			ps.setClob(paramIndex, new PassThroughClob(content));
		}
		else {
			ps.setClob(paramIndex, (Clob) null);
		}
	}
	else {
		ps.setString(paramIndex, content);
	}
	if (logger.isDebugEnabled()) {
		logger.debug(content != null ? "Set string for CLOB with length " + content.length() :
				"Set CLOB to null");
	}
}
 
源代码11 项目: spliceengine   文件: LobStreamsTest.java
/**
 * Tests the ClobWriter.write(int c) method
 **/
public void testClobCharacterWrite1Char() throws Exception
{
    char testchar = 'a';

    PreparedStatement stmt3 = prepareStatement(
        "SELECT c FROM testBlobX1 WHERE a = 1");
    ResultSet rs3 = stmt3.executeQuery();
    rs3.next();
    Clob clob = rs3.getClob(1);

    assertTrue ("FAIL -- clob is NULL", clob != null);
    Writer clobWriter = clob.setCharacterStream(1L);
    clobWriter.write(testchar);
    clobWriter.close();

    PreparedStatement stmt4 = prepareStatement(
        "UPDATE testBlobX1 SET c = ? WHERE a = 1");
    stmt4.setClob(1,  clob);
    stmt4.executeUpdate();
    stmt4.close();

    rs3.close();
    rs3 = stmt3.executeQuery();
    assertTrue("FAIL -- clob not found", rs3.next());

    clob = rs3.getClob(1);
    long new_length = clob.length();
    assertEquals("FAIL -- wrong clob length", 1, new_length);
    // Check contents ...
    Reader lStream = clob.getCharacterStream();
    char clobchar = (char) lStream.read();
    assertEquals("FAIL - fetched Clob and original contents do " +
            "not match", testchar, clobchar);

    lStream.close();
    rs3.close();
    stmt3.close();
}
 
源代码12 项目: gemfirexd-oss   文件: TradeBuyOrderDMLStmtJson.java
protected void addBatchInsert(PreparedStatement stmt, int oid, int cid, int sid, int qty,
    String status, Timestamp time, BigDecimal bid, int tid, boolean isPut) throws SQLException {
  
  JSONObject json = new JSONObject();
  String jsonLog ="";
  
  if (SQLTest.hasJSON &&  ! SQLHelper.isDerbyConn(stmt.getConnection()) ) {
         json = getJSONObject(oid,cid,sid,qty,status,time,bid,tid);
         jsonLog = ",JSON_DETAILS: " +json.toJSONString();
  }
  
  Log.getLogWriter().info( (SQLHelper.isDerbyConn(stmt.getConnection())? "Derby - " :"gemfirexd - "  ) +  (isPut ? "putting " : "inserting ") + " into trade.buyorders with data OID:" + oid +
      ",CID:"+ cid + ",SID:" + sid + ",QTY:" + qty + ",STATUS:" + status +
      ",TIME:"+ time + ",BID:" + bid + ",TID:" + tid + jsonLog);
  
  stmt.setInt(1, oid);
  stmt.setInt(2, cid);
  stmt.setInt(3, sid);
  stmt.setInt(4, qty);
  stmt.setBigDecimal(5, bid);
  stmt.setTimestamp(6, time);
  stmt.setString(7, status);       
  stmt.setInt(8, tid);
  if (SQLTest.hasJSON &&  ! SQLHelper.isDerbyConn(stmt.getConnection()) ) {  Clob jsonClob = stmt.getConnection().createClob();
  jsonClob.setString(1, json.toJSONString());
  stmt.setClob(9, jsonClob); }
  stmt.addBatch();
}
 
源代码13 项目: gemfirexd-oss   文件: ConnectionMethodsTest.java
/**
 * Test the createClob method implementation in the Connection interface
 *
 * @exception SQLException, FileNotFoundException, Exception if error occurs
 */
public void testCreateClob() throws   SQLException,
        FileNotFoundException, IOException,
        Exception{

    Connection conn = getConnection();
    int b, c;
    Clob clob;

    Statement s = createStatement();

    PreparedStatement ps =
            prepareStatement("insert into clobtable2 (n, clobcol)" + " values(?,?)");
    ps.setInt(1,1000);
    clob = conn.createClob();

    try {
        is = (FileInputStream) AccessController.doPrivileged(
                new PrivilegedExceptionAction() {
            public Object run() throws FileNotFoundException {
                return new FileInputStream("extin/short.txt");
            }
        });
    } catch (PrivilegedActionException e) {
        // e.getException() should be an instance of FileNotFoundException,
        // as only "checked" exceptions will be "wrapped" in a
        // PrivilegedActionException.
        throw (FileNotFoundException) e.getException();
    }
    OutputStream os = clob.setAsciiStream(1);
    ArrayList beforeUpdateList = new ArrayList();

    c = is.read();
    while(c>0) {
        os.write(c);
        beforeUpdateList.add(c);
        c = is.read();
    }
    ps.setClob(2, clob);
    ps.executeUpdate();

    Statement stmt = createStatement();
    ResultSet rs =
            stmt.executeQuery("select clobcol from clobtable2 where n = 1000");
    assertTrue(rs.next());

    clob = rs.getClob(1);
    assertEquals(beforeUpdateList.size(), clob.length());

    //Get the InputStream from this Clob.
    InputStream in = clob.getAsciiStream();
    ArrayList afterUpdateList = new ArrayList();

    b = in.read();

    while (b > -1) {
        afterUpdateList.add(b);
        b = in.read();
    }

    assertEquals(beforeUpdateList.size(), afterUpdateList.size());

    //Now check if the two InputStreams
    //match
    for (int i = 0; i < clob.length(); i++) {
        assertEquals(beforeUpdateList.get(i), afterUpdateList.get(i));
    }

    os.close();
    is.close();

}
 
源代码14 项目: gemfirexd-oss   文件: LobStreamsTest.java
/**
 * Tests the ClobOutputStream.write(int b) method
 **/
public void testClobAsciiWrite1Param() throws Exception
{
    InputStream streamIn = new LoopingAlphabetStream(streamSize[1]);

    PreparedStatement stmt3 = prepareStatement(
        "SELECT c FROM testBlobX1 WHERE a = 1");
    ResultSet rs3 = stmt3.executeQuery();
    rs3.next();
    Clob clob = rs3.getClob(1);

    assertTrue("FAIL -- clob is NULL", clob != null);
    int buffer;
    OutputStream outstream = clob.setAsciiStream(1L);
    while ((buffer = streamIn.read()) != -1) {
        outstream.write(buffer);
    }
    outstream.close();
    streamIn.close();

    PreparedStatement stmt4 = prepareStatement(
        "UPDATE testBlobX1 SET c = ? WHERE a = 1");
    stmt4.setClob(1,  clob);
    stmt4.executeUpdate();
    stmt4.close();

    rs3.close();
    rs3 = stmt3.executeQuery();
    assertTrue("FAIL -- clob not found", rs3.next());

    long new_length = rs3.getClob(1).length();
    assertEquals("FAIL -- wrong clob length", streamSize[1], new_length);

    // Check contents ...
    InputStream fStream = new LoopingAlphabetStream(streamSize[1]);
    InputStream lStream = rs3.getClob(1).getAsciiStream();
    assertTrue("FAIL - Clob and file contents do not match", compareLob2File(fStream, lStream));
    fStream.close();
    lStream.close();
    rs3.close();
    stmt3.close();
}
 
源代码15 项目: components   文件: JdbcRuntimeUtils.java
/**
 * fill the prepared statement object
 *
 * @param pstmt
 * @param indexs
 * @param types
 * @param values
 * @throws SQLException
 */
public static void setPreparedStatement(final PreparedStatement pstmt, final List<Integer> indexs, final List<String> types,
        final List<Object> values) throws SQLException {
    for (int i = 0; i < indexs.size(); i++) {
        Integer index = indexs.get(i);
        PreparedStatementTable.Type type = PreparedStatementTable.Type.valueOf(types.get(i));
        Object value = values.get(i);

        switch (type) {
        case BigDecimal:
            pstmt.setBigDecimal(index, (BigDecimal) value);
            break;
        case Blob:
            pstmt.setBlob(index, (Blob) value);
            break;
        case Boolean:
            pstmt.setBoolean(index, (boolean) value);
            break;
        case Byte:
            pstmt.setByte(index, (byte) value);
            break;
        case Bytes:
            pstmt.setBytes(index, (byte[]) value);
            break;
        case Clob:
            pstmt.setClob(index, (Clob) value);
            break;
        case Date:
            pstmt.setTimestamp(index, new Timestamp(((Date) value).getTime()));
            break;
        case Double:
            pstmt.setDouble(index, (double) value);
            break;
        case Float:
            pstmt.setFloat(index, (float) value);
            break;
        case Int:
            pstmt.setInt(index, (int) value);
            break;
        case Long:
            pstmt.setLong(index, (long) value);
            break;
        case Object:
            pstmt.setObject(index, value);
            break;
        case Short:
            pstmt.setShort(index, (short) value);
            break;
        case String:
            pstmt.setString(index, (String) value);
            break;
        case Time:
            pstmt.setTime(index, (Time) value);
            break;
        case Null:
            pstmt.setNull(index, (int) value);
            break;
        default:
            pstmt.setString(index, (String) value);
            break;
        }
    }
}
 
源代码16 项目: spliceengine   文件: ClobTest.java
/**
 * Tests that Derby specific end-of-stream markers aren't passed over to
 * the temporary Clob, which doesn't use such markers.
 * <p>
 * Passing the marker over will normally result in a UTF encoding exception.
 * <p>
 * ID USAGE: reads id 2, writes id 10002
 */
public void testInsertCharacter_ReadOnlyToTemporary()
        throws IOException, SQLException {
    setAutoCommit(false);
    // Insert data, a medium sized Clob to store it as a stream.
    PreparedStatement ps = prepareStatement(
            "insert into ClobTestData values (?,?)");
    int initalSize = 128*1024;
    ps.setInt(1, 2);
    ps.setCharacterStream(
            2, new LoopingAlphabetReader(initalSize), initalSize);
    ps.executeUpdate();

    // Select the Clob, and change one character.
    PreparedStatement psSelect = prepareStatement(
            "select dClob from ClobTestData where id = ?");
    psSelect.setInt(1, 2);
    ResultSet lRs = psSelect.executeQuery();
    lRs.next();
    Clob lClob = lRs.getClob(1);
    lClob.setString(1, "K");
    Reader r = lClob.getCharacterStream();
    assertEquals('K', r.read());
    long length = 1;
    while (true) {
        // Since we're skipping characters, the bytes have to be decoded
        // and we will detect any encoding errors.
        long skipped = r.skip(4096);
        if (skipped > 0) {
            length += skipped;
        } else {
            break;
        }
    }
    lRs.close();
    assertEquals("Wrong length!", initalSize, length);
    // Reports the correct length, now try to insert it.
    ps.setInt(1, 10003);
    ps.setClob(2, lClob);
    ps.executeUpdate();
    // Fetch it back.
    psSelect.setInt(1, 10003);
    lRs = psSelect.executeQuery();
    lRs.next();
    Clob lClob2 = lRs.getClob(1);
    assertEquals(lClob.getCharacterStream(), lClob2.getCharacterStream());
    assertEquals(initalSize, lClob2.length());
}
 
/**
 * Fulfills prepared statement with values.
 *
 * @param pstmt - statement created from query.
 * @param preparedStatementTable - properties that store all indexes, types and values for prepared statement.
 * @throws SQLException if failed to insert value into prepared statement.
 */
public static void fillPreparedStatement(PreparedStatement pstmt, SnowflakePreparedStatementTableProperties preparedStatementTable)
        throws SQLException {
    List<Integer> indexes = preparedStatementTable.indexes.getValue();
    List<String> types = preparedStatementTable.types.getValue();
    List<Object> values = preparedStatementTable.values.getValue();
    for (int i = 0; i < indexes.size(); i++) {
        Integer index = indexes.get(i);
        SnowflakePreparedStatementTableProperties.Type type = SnowflakePreparedStatementTableProperties.Type.valueOf(types.get(i));
        Object value = values.get(i);

        if (value == null) {
            pstmt.setNull(index, Types.NULL);
            continue;
        }

        switch (type) {
        case BigDecimal:
            pstmt.setBigDecimal(index, (BigDecimal) value);
            break;
        case Blob:
            pstmt.setBlob(index, (Blob) value);
            break;
        case Boolean:
            pstmt.setBoolean(index, (boolean) value);
            break;
        case Byte:
            pstmt.setByte(index, (byte) value);
            break;
        case Bytes:
            pstmt.setBytes(index, (byte[]) value);
            break;
        case Clob:
            pstmt.setClob(index, (Clob) value);
            break;
        case Date:
            pstmt.setTimestamp(index, new Timestamp(((Date) value).getTime()));
            break;
        case Double:
            pstmt.setDouble(index, (double) value);
            break;
        case Float:
            pstmt.setFloat(index, (float) value);
            break;
        case Int:
            pstmt.setInt(index, (int) value);
            break;
        case Long:
            pstmt.setLong(index, (long) value);
            break;
        case Object:
            pstmt.setObject(index, value);
            break;
        case Short:
            pstmt.setShort(index, (short) value);
            break;
        case String:
            pstmt.setString(index, (String) value);
            break;
        case Time:
            pstmt.setTime(index, (Time) value);
            break;
        case Null:
            pstmt.setNull(index, (int) value);
            break;
        default:
            pstmt.setString(index, (String) value);
            break;
        }
    }
}
 
源代码18 项目: Quicksql   文件: ResultSetEnumerable.java
/** Assigns a value to a dynamic parameter in a prepared statement, calling
 * the appropriate {@code setXxx} method based on the type of the value. */
private static void setDynamicParam(PreparedStatement preparedStatement,
    int i, Object value) throws SQLException {
  if (value == null) {
    preparedStatement.setObject(i, null, SqlType.ANY.id);
  } else if (value instanceof Timestamp) {
    preparedStatement.setTimestamp(i, (Timestamp) value);
  } else if (value instanceof Time) {
    preparedStatement.setTime(i, (Time) value);
  } else if (value instanceof String) {
    preparedStatement.setString(i, (String) value);
  } else if (value instanceof Integer) {
    preparedStatement.setInt(i, (Integer) value);
  } else if (value instanceof Double) {
    preparedStatement.setDouble(i, (Double) value);
  } else if (value instanceof java.sql.Array) {
    preparedStatement.setArray(i, (java.sql.Array) value);
  } else if (value instanceof BigDecimal) {
    preparedStatement.setBigDecimal(i, (BigDecimal) value);
  } else if (value instanceof Boolean) {
    preparedStatement.setBoolean(i, (Boolean) value);
  } else if (value instanceof Blob) {
    preparedStatement.setBlob(i, (Blob) value);
  } else if (value instanceof Byte) {
    preparedStatement.setByte(i, (Byte) value);
  } else if (value instanceof NClob) {
    preparedStatement.setNClob(i, (NClob) value);
  } else if (value instanceof Clob) {
    preparedStatement.setClob(i, (Clob) value);
  } else if (value instanceof byte[]) {
    preparedStatement.setBytes(i, (byte[]) value);
  } else if (value instanceof Date) {
    preparedStatement.setDate(i, (Date) value);
  } else if (value instanceof Float) {
    preparedStatement.setFloat(i, (Float) value);
  } else if (value instanceof Long) {
    preparedStatement.setLong(i, (Long) value);
  } else if (value instanceof Ref) {
    preparedStatement.setRef(i, (Ref) value);
  } else if (value instanceof RowId) {
    preparedStatement.setRowId(i, (RowId) value);
  } else if (value instanceof Short) {
    preparedStatement.setShort(i, (Short) value);
  } else if (value instanceof URL) {
    preparedStatement.setURL(i, (URL) value);
  } else if (value instanceof SQLXML) {
    preparedStatement.setSQLXML(i, (SQLXML) value);
  } else {
    preparedStatement.setObject(i, value);
  }
}
 
源代码19 项目: spliceengine   文件: LobStreamsTest.java
/**
 * Tests the ClobOutputStream.write(byte  b[], int off, int len) method
 **/
public void testClobAsciiWrite3Param() throws Exception {
    InputStream streamIn = new LoopingAlphabetStream(streamSize[0]);
    assertTrue("FAIL -- file not found", streamIn != null);

    PreparedStatement stmt3 = prepareStatement(
        "SELECT c FROM testBlobX1 WHERE a = 1");
    ResultSet rs3 = stmt3.executeQuery();
    rs3.next();
    Clob clob = rs3.getClob(1);

    assertTrue("FAIL -- clob is NULL", clob != null);

    int count = 0;
    byte[] buffer = new byte[1024];
    OutputStream outstream = clob.setAsciiStream(1L);
    while ((count = streamIn.read(buffer)) != -1) {
        outstream.write(buffer, 0, count);
    }
    outstream.close();
    streamIn.close();

    PreparedStatement stmt4 = prepareStatement(
        "UPDATE testBlobX1 SET c = ? WHERE a = 1");
    stmt4.setClob(1,  clob);
    stmt4.executeUpdate();
    stmt4.close();

    rs3.close();
    rs3 = stmt3.executeQuery();

    assertTrue("FAIL -- clob not found", rs3.next());

    clob = rs3.getClob(1);
    long new_length = clob.length();
    assertEquals("FAIL -- wrong clob length",
            streamSize[0], new_length);
    // Check contents ...
    InputStream fStream = new LoopingAlphabetStream(streamSize[0]);
    InputStream lStream = clob.getAsciiStream();
    assertTrue("FAIL - Clob and file contents do not match",
            compareLob2File(fStream, lStream));

    fStream.close();
    lStream.close();
    rs3.close();
    stmt3.close();
}
 
源代码20 项目: butterfly-persistence   文件: ClobGetterMapping.java
protected void insertObjectDo(Object value, PreparedStatement statement, int index) throws SQLException {
    statement.setClob(index, (Clob) value);
}