java.sql.Statement#getUpdateCount ( )源码实例Demo

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

源代码1 项目: calcite   文件: CalciteRemoteDriverTest.java
/** Test remote Statement insert. */
@Test void testInsert() throws Exception {
  final Connection connection = DriverManager.getConnection(
      "jdbc:avatica:remote:factory="
          + LocalServiceModifiableFactory.class.getName());
  assertThat(connection.isClosed(), is(false));
  Statement statement = connection.createStatement();
  assertThat(statement.isClosed(), is(false));

  String sql = "insert into \"foo\".\"bar\" values (1, 1, 'second', 2, 2)";
  boolean status = statement.execute(sql);
  assertThat(status, is(false));
  ResultSet resultSet = statement.getResultSet();
  assertThat(resultSet, nullValue());
  int updateCount = statement.getUpdateCount();
  assertThat(updateCount, is(1));
  connection.close();
}
 
源代码2 项目: mybatis   文件: DefaultResultSetHandler.java
private ResultSetWrapper getFirstResultSet(Statement stmt) throws SQLException {
  ResultSet rs = stmt.getResultSet();
  //HSQLDB2.1特殊情况处理
  while (rs == null) {
    // move forward to get the first resultset in case the driver
    // doesn't return the resultset as the first result (HSQLDB 2.1)
    if (stmt.getMoreResults()) {
      rs = stmt.getResultSet();
    } else {
      if (stmt.getUpdateCount() == -1) {
        // no more results. Must be no resultset
        break;
      }
    }
  }
  return rs != null ? new ResultSetWrapper(rs, configuration) : null;
}
 
源代码3 项目: weMessage   文件: DatabaseManager.java
public List<String> getAllExistingDevices() throws SQLException {
    List<String> devices = new ArrayList<>();
    String selectDevicesStatementString = "SELECT * FROM " + TABLE_DEVICES;
    Statement selectDevicesStatement = getServerDatabaseConnection().createStatement();

    boolean isResultSet = selectDevicesStatement.execute(selectDevicesStatementString);

    while(true) {
        if(isResultSet) {
            ResultSet resultSet = selectDevicesStatement.getResultSet();
            while(resultSet.next()) {
                String deviceId = resultSet.getString(COLUMN_DEVICE_ID);
                devices.add(deviceId);
            }
            resultSet.close();
        } else {
            if(selectDevicesStatement.getUpdateCount() == -1) {
                break;
            }
        }
        isResultSet = selectDevicesStatement.getMoreResults();
    }
    selectDevicesStatement.close();

    return devices;
}
 
源代码4 项目: lams   文件: ResultSetReturnImpl.java
@Override
public ResultSet execute(Statement statement, String sql) {
	sqlStatementLogger.logStatement( sql );
	try {
		final ResultSet rs;
		try {
			jdbcExecuteStatementStart();
			if ( !statement.execute( sql ) ) {
				while ( !statement.getMoreResults() && statement.getUpdateCount() != -1 ) {
					// do nothing until we hit the resultset
				}
			}
			rs = statement.getResultSet();
		}
		finally {
			jdbcExecuteStatementEnd();
		}
		postExtract( rs, statement );
		return rs;
	}
	catch (SQLException e) {
		throw sqlExceptionHelper.convert( e, "could not execute statement" );
	}
}
 
源代码5 项目: mybaties   文件: DefaultResultSetHandler.java
private ResultSetWrapper getFirstResultSet(Statement stmt) throws SQLException {
  ResultSet rs = stmt.getResultSet();
  //HSQLDB2.1特殊情况处理
  while (rs == null) {
    // move forward to get the first resultset in case the driver
    // doesn't return the resultset as the first result (HSQLDB 2.1)
    if (stmt.getMoreResults()) {
      rs = stmt.getResultSet();
    } else {
      if (stmt.getUpdateCount() == -1) {
        // no more results. Must be no resultset
        break;
      }
    }
  }
  return rs != null ? new ResultSetWrapper(rs, configuration) : null;
}
 
源代码6 项目: ormlite-jdbc   文件: JdbcDatabaseConnection.java
@Override
public int executeStatement(String statementStr, int resultFlags) throws SQLException {
	if (resultFlags == DatabaseConnection.DEFAULT_RESULT_FLAGS) {
		resultFlags = ResultSet.TYPE_FORWARD_ONLY;
	}
	Statement statement = connection.createStatement(resultFlags, ResultSet.CONCUR_READ_ONLY);
	statement.execute(statementStr);
	return statement.getUpdateCount();
}
 
源代码7 项目: xipki   文件: CaManagerQueryExecutor.java
void unlockCa() throws CaMgmtException {
  final String sql = "DELETE FROM SYSTEM_EVENT WHERE NAME='LOCK'";
  Statement stmt = null;
  try {
    stmt = createStatement();
    stmt.execute(sql);
    if (stmt.getUpdateCount() == 0) {
      throw new CaMgmtException("could not unlock CA");
    }
  } catch (SQLException ex) {
    throw new CaMgmtException(datasource.translate(sql, ex));
  } finally {
    datasource.releaseResources(stmt, null);
  }
}
 
源代码8 项目: gemfirexd-oss   文件: TestUtil.java
/**
 * Execute the given SQL string checking that the execution should return at
 * least one result i.e. either at least one row in {@link ResultSet} for
 * queries or at least one affected row for updates. The optional
 * <code>usePrepStmt</code> specifies whether to use {@link PreparedStatement}
 * or to use {@link Statement} for SQL execution.
 */
public static int sqlExecuteVerify(String jdbcSQL, Boolean usePrepStmt)
    throws SQLException {
  setupConnection();
  getLogger().info(
      "For user '" + jdbcConn.getMetaData().getUserName() + '['
          + currentUserName + "]' executing SQL with verification: "
          + jdbcSQL);
  Statement stmt;
  boolean resultType;
  if (usePrepStmt.booleanValue()) {
    stmt = jdbcConn.prepareStatement(jdbcSQL);
    resultType = ((PreparedStatement)stmt).execute();
  }
  else {
    stmt = jdbcConn.createStatement();
    resultType = stmt.execute(jdbcSQL);
  }
  int count = 0;
  try {
    if (resultType) {
      ResultSet rs = stmt.getResultSet();
      while (rs.next()) {
        ++count;
      }
    }
    else {
      count = stmt.getUpdateCount();
    }
  } finally {
    stmt.close();
  }
  getLogger().info(
      "sqlExecuteVerify: got the number of changes/results as: " + count);
  // Assert.assertTrue("Expected at least one result/change", count > 0);
  return count;
}
 
源代码9 项目: ormlite-core   文件: H2DatabaseConnection.java
@Override
public int executeStatement(String statementStr, int resultFlags) throws SQLException {
	if (resultFlags == DatabaseConnection.DEFAULT_RESULT_FLAGS) {
		resultFlags = ResultSet.TYPE_FORWARD_ONLY;
	}
	Statement statement = connection.createStatement(resultFlags, ResultSet.CONCUR_READ_ONLY);
	statement.execute(statementStr);
	return statement.getUpdateCount();
}
 
源代码10 项目: gemfirexd-oss   文件: TestUtil.java
/**
 * Execute the given SQL string checking that the execution should return at
 * least one result i.e. either at least one row in {@link ResultSet} for
 * queries or at least one affected row for updates. The optional
 * <code>usePrepStmt</code> specifies whether to use {@link PreparedStatement}
 * or to use {@link Statement} for SQL execution.
 */
public static int sqlExecuteVerify(String jdbcSQL, Boolean usePrepStmt)
    throws SQLException {
  setupConnection();
  getLogger().info(
      "For user '" + jdbcConn.getMetaData().getUserName() + '['
          + currentUserName + "]' executing SQL with verification: "
          + jdbcSQL);
  Statement stmt;
  boolean resultType;
  if (usePrepStmt.booleanValue()) {
    stmt = jdbcConn.prepareStatement(jdbcSQL);
    resultType = ((PreparedStatement)stmt).execute();
  }
  else {
    stmt = jdbcConn.createStatement();
    resultType = stmt.execute(jdbcSQL);
  }
  int count = 0;
  try {
    if (resultType) {
      ResultSet rs = stmt.getResultSet();
      while (rs.next()) {
        ++count;
      }
    }
    else {
      count = stmt.getUpdateCount();
    }
  } finally {
    stmt.close();
  }
  getLogger().info(
      "sqlExecuteVerify: got the number of changes/results as: " + count);
  // Assert.assertTrue("Expected at least one result/change", count > 0);
  return count;
}
 
源代码11 项目: gemfirexd-oss   文件: DB.java
/**
 * Executes the given sql string.
 * @param sqlStr A String containing sql to execute.
 * @return The result of the execution, either a ResultSet or update count (Integer)
 * @throws DBException Thrown if anything goes wrong during execution.
 */
public Object executeSql(String sqlStr) throws DBException {
  try {
    Statement stmt = getConnection().createStatement();
    boolean result = stmt.execute(sqlStr);
    if (result) { 
      return stmt.getResultSet();
    } else {
      return stmt.getUpdateCount();
    }
  } catch (SQLException e) {
    String s = "Problem executing:" + sqlStr;
    throw new DBException(s, e);
  }
}
 
源代码12 项目: shardingsphere   文件: AbstractStatementAdapter.java
private int accumulate() throws SQLException {
    long result = 0;
    boolean hasResult = false;
    for (Statement each : getRoutedStatements()) {
        int updateCount = each.getUpdateCount();
        if (updateCount > -1) {
            hasResult = true;
        }
        result += updateCount;
    }
    if (result > Integer.MAX_VALUE) {
        result = Integer.MAX_VALUE;
    }
    return hasResult ? Long.valueOf(result).intValue() : -1;
}
 
源代码13 项目: jTDS   文件: TestBase.java
/**
 * <p> Dump all results produced by the execution of a statement, including
 * update counts, resultsets and generated keys if the statement has been
 * executed using one of the {@link Statement#execute()} that directs the
 * driver to return generated keys. </p>
 *
 * @param statement
 *    {@link Statement} object used for execution
 */
public void dumpAll( Statement statement )
   throws SQLException
{
   int uc = statement.getUpdateCount();
   boolean isResult = uc == -1;

   do
   {
      if( isResult )
      {
         ResultSet res = statement.getResultSet();

         if( res != null )
         {
            dump( res );
         }
      }
      else
      {
         System.out.println( "update count: " + uc );
      }

      // maybe the update created keys
      dumpKeys( statement );
   }
   while( ( isResult = statement.getMoreResults() ) || ( uc = statement.getUpdateCount() ) != -1 );
}
 
源代码14 项目: gemfirexd-oss   文件: TransactionTest.java
public void testTxnUpdateBehaviorForLocking() throws Exception {

    final CountDownLatch latch = new CountDownLatch(1);
    final CountDownLatch barrier = new CountDownLatch(2);
    final java.sql.Connection childConn = getConnection();
    Connection conn = getConnection();
    conn.setTransactionIsolation(getIsolationLevel());
    Statement stmt = conn.createStatement();
    stmt.execute("Create table t1 (c1 int not null primary key, "
        + "qty int not null, c3 int not null, exchange varchar(20), "
        + "c4 int not null, constraint C3_Unique unique (c3), "
        + "constraint exc_ch check (exchange in ('nasdaq', 'nye', 'amex')), "
        + "constraint qty_ck check (qty >= 5))"+getSuffix());

    // stmt.execute("create index idx on t1(c4)");
    stmt.execute("insert into t1 values(1, 10, 1, 'nye', 4), "
        + "(2, 20, 2, 'amex', 4)");

    conn.commit();

    MemHeapScanController.setWaitObjectAfterFirstQualifyForTEST(latch);
    MemHeapScanController.setWaitBarrierBeforeFirstScanForTEST(barrier);
    MemHeapScanController.setWaitForLatchForTEST(0);

    try {
      final Exception[] ex = new Exception[] { null };
      Runnable r = new Runnable() {

        @Override
        public void run() {
          try {
            childConn.setTransactionIsolation(getIsolationLevel());
            Statement cstmt = childConn.createStatement();
            MemHeapScanController.setWaitForLatchForTEST(3);
            cstmt.execute("update t1 set c4 = 40 where c4 = 4");
            updateCnt = cstmt.getUpdateCount();
          } catch (Exception e) {
            ex[0] = e;
          } finally {
            MemHeapScanController.setWaitForLatchForTEST(0);
          }
        }
      };

      Thread t = new Thread(r);
      t.start();

      // set stop after first qualify
      // start second txn and fire update such that to change the columns which
      // will no more satisfy the above condition
      Connection conn2 = getConnection();
      conn2.setTransactionIsolation(getIsolationLevel());
      Statement stmt2 = conn2.createStatement();
      stmt2.execute("update t1 set c4 = 10");
      conn2.commit();
      latch.countDown();
      // move forward with the first txn and it should not update the row
      t.join();
      assertEquals(0, updateCnt);
      // expect a conflict in other thread since it takes SH lock before qualify
      // that will block commit, and then it will try to upgrade to EX_SH which
      // will conflict with this thread
      assertNotNull(ex[0]);
      if (!(ex[0] instanceof SQLException)) {
        throw ex[0];
      }
      if (!"X0Z02".equals(((SQLException)ex[0]).getSQLState())) {
        throw ex[0];
      }
    } finally {

      MemHeapScanController.setWaitBarrierBeforeFirstScanForTEST(null);
      MemHeapScanController.setWaitObjectAfterFirstQualifyForTEST(null);
    }
    childConn.commit();
  }
 
源代码15 项目: hop   文件: Database.java
public Result execStatement( String rawsql, IRowMeta params, Object[] data ) throws HopDatabaseException {
  Result result = new Result();

  // Replace existing code with a class that removes comments from the raw
  // SQL.
  // The SqlCommentScrubber respects single-quoted strings, so if a
  // double-dash or a multiline comment appears
  // in a single-quoted string, it will be treated as a string instead of
  // comments.
  String sql = databaseMeta.getIDatabase().createSqlScriptParser().removeComments( rawsql ).trim();
  try {
    boolean resultSet;
    int count;
    if ( params != null ) {
      PreparedStatement prep_stmt = connection.prepareStatement( databaseMeta.stripCR( sql ) );
      setValues( params, data, prep_stmt ); // set the parameters!
      resultSet = prep_stmt.execute();
      count = prep_stmt.getUpdateCount();
      prep_stmt.close();
    } else {
      String sqlStripped = databaseMeta.stripCR( sql );
      // log.logDetailed("Executing SQL Statement: ["+sqlStripped+"]");
      Statement stmt = connection.createStatement();
      resultSet = stmt.execute( sqlStripped );
      count = stmt.getUpdateCount();
      stmt.close();
    }
    String upperSql = sql.toUpperCase();
    if ( !resultSet ) {
      // if the result is a resultset, we don't do anything with it!
      // You should have called something else!
      // log.logDetailed("What to do with ResultSet??? (count="+count+")");
      if ( count > 0 ) {
        if ( upperSql.startsWith( "INSERT" ) ) {
          result.setNrLinesOutput( count );
        } else if ( upperSql.startsWith( "UPDATE" ) ) {
          result.setNrLinesUpdated( count );
        } else if ( upperSql.startsWith( "DELETE" ) ) {
          result.setNrLinesDeleted( count );
        }
      }
    }

    // See if a cache needs to be cleared...
    if ( upperSql.startsWith( "ALTER TABLE" )
      || upperSql.startsWith( "DROP TABLE" ) || upperSql.startsWith( "CREATE TABLE" ) ) {
      DbCache.getInstance().clear( databaseMeta.getName() );
    }
  } catch ( SQLException ex ) {
    throw new HopDatabaseException( "Couldn't execute SQL: " + sql + Const.CR, ex );
  } catch ( Exception e ) {
    throw new HopDatabaseException( "Unexpected error executing SQL: " + Const.CR, e );
  }

  return result;
}
 
源代码16 项目: jsqsh   文件: InsertRenderer.java
/**
 * Called when the batch is to be executed via a "go".
 * 
 * @return true if it worked, false otherwise.
 */
private boolean insertGo() {
    
    /*
     * If there is no connection, then just print the
     * word "go" to the screen.
     */
    if (conn == null) {
        
        session.out.println(batchTerminator);
        return true;
    }
    
    /*
     * If our batch is empty then nothing to do.
     */
    if (insertBatch.length() == 0) {
        
        return true;
    }
    
    /*
     * Otherwise, attempt to execute.
     */
    try {
        
        Statement statement = conn.createStatement();
        statement.execute(insertBatch.toString());
        statement.getUpdateCount();
        statement.close();
        
        conn.commit();
    }
    catch (SQLException e) {
        
        SQLTools.printException(session, e);
        
        insertBatch.setLength(0);
        return false;
    }
    
    insertBatch.setLength(0);
    return true;
}
 
源代码17 项目: evosql   文件: TestUtil.java
protected boolean test(Statement aStatement) {

        try {
            try {

                //execute the SQL
                aStatement.execute(getSql());
            } catch (SQLException s) {
                throw new Exception("Expected a ResultSet, but got the error: "
                                    + s.getMessage());
            }

            //check that update count != -1
            if (aStatement.getUpdateCount() != -1) {
                throw new Exception(
                    "Expected a ResultSet, but got an update count of "
                    + aStatement.getUpdateCount());
            }

            //iterate over the ResultSet
            ResultSet    results  = aStatement.getResultSet();
            StringBuffer printVal = new StringBuffer();

            while (results.next()) {
                for (int j = 0; j < results.getMetaData().getColumnCount();
                        j++) {
                    if (j != 0) {
                        printVal.append(',');
                    }

                    printVal.append(results.getString(j + 1));
                }

                printVal.append(LS);
            }

            throw new Exception(printVal.toString());
        } catch (Exception x) {
            message = x.toString();

            return false;
        }
    }
 
源代码18 项目: skywalking   文件: SWStatementTest.java
@Test
public void testPreparedStatementConfig() throws SQLException {
    Statement statement = swConnection.createStatement();
    statement.cancel();
    statement.getUpdateCount();
    statement.setFetchDirection(1);
    statement.getFetchDirection();
    statement.getResultSetConcurrency();
    statement.getResultSetType();
    statement.isClosed();
    statement.setPoolable(false);
    statement.isPoolable();
    statement.getWarnings();
    statement.clearWarnings();
    statement.setCursorName("test");
    statement.setMaxFieldSize(11);
    statement.getMaxFieldSize();
    statement.setMaxRows(10);
    statement.getMaxRows();
    statement.setEscapeProcessing(true);
    statement.setFetchSize(1);
    statement.getFetchSize();
    statement.setQueryTimeout(1);
    statement.getQueryTimeout();
    Connection connection = statement.getConnection();

    statement.execute("SELECT * FROM test");
    statement.getMoreResults();
    statement.getMoreResults(1);
    statement.getResultSetHoldability();
    statement.getResultSet();

    statement.close();
    verify(mysqlStatement).getUpdateCount();
    verify(mysqlStatement).getMoreResults();
    verify(mysqlStatement).setFetchDirection(anyInt());
    verify(mysqlStatement).getFetchDirection();
    verify(mysqlStatement).getResultSetType();
    verify(mysqlStatement).isClosed();
    verify(mysqlStatement).setPoolable(anyBoolean());
    verify(mysqlStatement).getWarnings();
    verify(mysqlStatement).clearWarnings();
    verify(mysqlStatement).setCursorName(anyString());
    verify(mysqlStatement).setMaxFieldSize(anyInt());
    verify(mysqlStatement).getMaxFieldSize();
    verify(mysqlStatement).setMaxRows(anyInt());
    verify(mysqlStatement).getMaxRows();
    verify(mysqlStatement).setEscapeProcessing(anyBoolean());
    verify(mysqlStatement).getResultSetConcurrency();
    verify(mysqlStatement).getResultSetConcurrency();
    verify(mysqlStatement).getResultSetType();
    verify(mysqlStatement).getMoreResults(anyInt());
    verify(mysqlStatement).setFetchSize(anyInt());
    verify(mysqlStatement).getFetchSize();
    verify(mysqlStatement).getQueryTimeout();
    verify(mysqlStatement).setQueryTimeout(anyInt());
    verify(mysqlStatement).getResultSet();
    assertThat(connection, CoreMatchers.<Connection>is(swConnection));

    TraceSegment traceSegment = segmentStorage.getTraceSegments().get(0);
    List<AbstractTracingSpan> spans = SegmentHelper.getSpans(traceSegment);
    assertThat(spans.size(), is(1));
    assertDBSpan(spans.get(0), "Mysql/JDBI/Statement/execute", "SELECT * FROM test");
}
 
源代码19 项目: sql-layer   文件: RestDMLServiceImpl.java
private void processSQL (Connection conn, PrintWriter writer, 
        OutputType outputType, CommitMode commitMode, 
        ProcessStatement stmt) throws SQLException {
    boolean useSubArrays = (outputType == OutputType.OBJECT);
    AkibanAppender appender = AkibanAppender.of(writer);
    int nresults = 0;
    commitMode.begin(conn);
    outputType.begin(appender);
    
    Statement s = stmt.processStatement(nresults);
    while (s != null) {
        if(useSubArrays) {
            beginResultSetArray(appender, nresults == 0, nresults);
        }
        JDBCResultSet results = (JDBCResultSet) s.getResultSet();
        int updateCount = s.getUpdateCount();
        
        if (results != null && !results.isClosed()) {
            collectResults(results, appender, options);
            // Force close the result set here because if you execute "SELECT...;INSERT..." 
            // the call to s.getResultSet() returns the (now empty) SELECT result set
            // giving bad results
            results.close();
        } else {
            appender.append("\n{\"update_count\":");
            appender.append(updateCount);
            results = (JDBCResultSet) s.getGeneratedKeys();
            if (results != null) {
                appender.append(",\n\"returning\":[");
                collectResults(results, appender, options);
                appender.append("]\n");
            }
            appender.append("}\n");
        }
        if(useSubArrays) {
            endResultSetArray(appender);
        }
        ++nresults;
        s = stmt.processStatement(nresults);
    }
    
    commitMode.end(conn);
    outputType.end(appender);

}
 
源代码20 项目: kareldb   文件: BaseJDBCTestCase.java
/**
 * Take the received Statement--on which a query has been
 * executed--and fetch all rows of all result sets (if any)
 * returned from execution.  The rows themselves are
 * discarded.  This is useful when we expect there to be
 * an error when processing the results but do not know
 * (or care) at what point the error occurs.
 *
 * @param st     An already-executed statement from which
 *               we get the result set to process (if there is one).
 * @param haveRS Whether or not the the statement's
 *               first result is a result set (as opposed to an
 *               update count).
 */
private static void fetchAndDiscardAllResults(Statement st,
                                              boolean haveRS) throws SQLException {
    ResultSet rs = null;
    while (haveRS || (st.getUpdateCount() != -1)) {
        // If we have a result set, iterate through all
        // of the rows.
        if (haveRS)
            JDBC.assertDrainResults(st.getResultSet(), -1);
        haveRS = st.getMoreResults();
    }
}