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

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

源代码1 项目: L2ACP-api   文件: Helpers.java
public static void unjailOfflinePlayer(String name)
{
	try (Connection con = L2DatabaseFactory.getInstance().getConnection())
	{
		PreparedStatement statement = con.prepareStatement("UPDATE characters SET x=?, y=?, z=?, punish_level=?, punish_timer=? WHERE char_name=?");
		statement.setInt(1, 17836);
		statement.setInt(2, 170178);
		statement.setInt(3, -3507);
		statement.setInt(4, 0);
		statement.setLong(5, 0);
		statement.setString(6, name);
		statement.execute();
		int count = statement.getUpdateCount();
		statement.close();
	}
	catch (SQLException se)
	{
	}
}
 
源代码2 项目: mysql_perf_analyzer   文件: MetricsDbBase.java
private boolean removeDBInfoById(Connection conn, int dbid)
 {
String sql = "delete from "+DBINFO_TABLENAME+" where dbid=?";

PreparedStatement pstmt = null;
try
{
  pstmt = conn.prepareStatement(sql);
  pstmt.setInt(1, dbid);
  pstmt.execute();
  logger.info("Removed the database host : ("+dbid+")");
  return pstmt.getUpdateCount()>0;
}catch(Exception ex)
{
  logger.log(Level.SEVERE,"Exception", ex);
}finally
{
  DBUtils.close(pstmt);
}
return false;
 }
 
源代码3 项目: calcite-avatica   文件: RemoteDriverTest.java
@Test public void testInsertDrop() throws Exception {
  final String t = AvaticaUtils.unique("TEST_TABLE2");
  final String create =
      String.format(Locale.ROOT, "create table if not exists %s ("
          + "id int not null, "
          + "msg varchar(3) not null)", t);
  final String insert = String.format(Locale.ROOT,
      "insert into %s values(1, 'foo')", t);
  Connection connection = ljs();
  Statement statement = connection.createStatement();
  statement.execute(create);

  Statement stmt = connection.createStatement();
  int count = stmt.executeUpdate(insert);
  assertThat(count, is(1));
  ResultSet resultSet = stmt.getResultSet();
  assertThat(resultSet, nullValue());

  PreparedStatement pstmt = connection.prepareStatement(insert);
  boolean status = pstmt.execute();
  assertThat(status, is(false));
  int updateCount = pstmt.getUpdateCount();
  assertThat(updateCount, is(1));
}
 
源代码4 项目: calcite   文件: ResultSetEnumerable.java
private Enumerator<T> enumeratorBasedOnPreparedStatement() {
  Connection connection = null;
  PreparedStatement preparedStatement = null;
  try {
    connection = dataSource.getConnection();
    preparedStatement = connection.prepareStatement(sql);
    setTimeoutIfPossible(preparedStatement);
    preparedStatementEnricher.enrich(preparedStatement);
    if (preparedStatement.execute()) {
      final ResultSet resultSet = preparedStatement.getResultSet();
      preparedStatement = null;
      connection = null;
      return new ResultSetEnumerator<>(resultSet, rowBuilderFactory);
    } else {
      Integer updateCount = preparedStatement.getUpdateCount();
      return Linq4j.singletonEnumerator((T) updateCount);
    }
  } catch (SQLException e) {
    throw Static.RESOURCE.exceptionWhilePerformingQueryOnJdbcSubSchema(sql)
        .ex(e);
  } finally {
    closeIfPossible(connection, preparedStatement);
  }
}
 
源代码5 项目: mysql_perf_analyzer   文件: MetricsDbBase.java
private boolean removeDBInfo(Connection conn, String dbGroupName, String hostName)
 {
String sql = "delete from "+DBINFO_TABLENAME+" where dbgroupname=? and hostname=?";

PreparedStatement pstmt = null;
try
{
  pstmt = conn.prepareStatement(sql);
  pstmt.setString(1, dbGroupName.toLowerCase());
  pstmt.setString(2, hostName.toLowerCase());
  pstmt.execute();
  logger.info("Removed the database host : ("+dbGroupName+", "+hostName+")");
  return pstmt.getUpdateCount()>0;
}catch(Exception ex)
{
  logger.log(Level.SEVERE,"Exception", ex);
}finally
{
  DBUtils.close(pstmt);
}
return false;
 }
 
源代码6 项目: lams   文件: ResultSetReturnImpl.java
@Override
public ResultSet execute(PreparedStatement statement) {
	// sql logged by StatementPreparerImpl
	try {
		final ResultSet rs;
		try {
			jdbcExecuteStatementStart();
			if ( !statement.execute() ) {
				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" );
	}
}
 
源代码7 项目: sqoop-on-spark   文件: CommonRepositoryHandler.java
/**
 * Execute given query via a PreparedStatement.
 * A list of args can be passed to the query.
 *
 * Example: runQuery("SELECT * FROM example WHERE test = ?", "test");
 *
 * @param query Query that should be executed
 * @param args Long, String, or Object arguments
 */
protected void runQuery(String query, Connection conn, Object... args) {
  PreparedStatement stmt = null;
  try {
    stmt = conn.prepareStatement(query);

    for (int i = 0; i < args.length; ++i) {
      if (args[i] instanceof String) {
        stmt.setString(i + 1, (String)args[i]);
      } else if (args[i] instanceof Long) {
        stmt.setLong(i + 1, (Long) args[i]);
      } else {
        stmt.setObject(i + 1, args[i]);
      }
    }

    if (stmt.execute()) {
      ResultSet rset = stmt.getResultSet();
      int count = 0;
      while (rset.next()) {
        count++;
      }
      LOG.info("QUERY(" + query + ") produced unused resultset with "+ count + " rows");
    } else {
      int updateCount = stmt.getUpdateCount();
      LOG.info("QUERY(" + query + ") Update count: " + updateCount);
    }
  } catch (SQLException ex) {
    throw new SqoopException(CommonRepositoryError.COMMON_0000, query, ex);
  } finally {
    closeStatements(stmt);
  }
}
 
源代码8 项目: cacheonix-core   文件: IdentityGenerator.java
public Serializable executeAndExtract(PreparedStatement insert) throws SQLException {
	if ( !insert.execute() ) {
		while ( !insert.getMoreResults() && insert.getUpdateCount() != -1 ) {
			// do nothing until we hit the rsult set containing the generated id
		}
	}
	ResultSet rs = insert.getResultSet();
	try {
		return IdentifierGeneratorFactory.getGeneratedIdentity( rs, persister.getIdentifierType() );
	}
	finally {
		rs.close();
	}
}
 
源代码9 项目: mybatis   文件: PreparedStatementHandler.java
@Override
public int update(Statement statement) throws SQLException {
  //调用PreparedStatement.execute和PreparedStatement.getUpdateCount
  PreparedStatement ps = (PreparedStatement) statement;
  ps.execute();
  int rows = ps.getUpdateCount();
  Object parameterObject = boundSql.getParameterObject();
  KeyGenerator keyGenerator = mappedStatement.getKeyGenerator();
  keyGenerator.processAfter(executor, mappedStatement, ps, parameterObject);
  return rows;
}
 
源代码10 项目: uyuni   文件: CachedStatement.java
/**
 * Executes a prepared SQL statement with parameters.
 * @param connection a JDBC Connection object
 * @param sql SQL string to be prepared and executed
 * @param parameterMap The Map returned setup by replaceBindParams
 * @param parameters The Map returned setup by replaceBindParams
 * @param mode Mode for selection queries
 * @param dr Data result list or null
 * @return either an integer count of the number of rows updated, or the
 *         DataResult. Casting to int or DataResult is caller's
 *         responsibility
 * @throws SQLException
 */
private Object execute(Connection connection, String sql,
        Map<String, List<Integer>> parameterMap, Map<String, ?> parameters, Mode mode,
        List<Object> dr)
    throws SQLException {
    if (log.isDebugEnabled()) {
        log.debug("execute() - Executing: " + sql);
        log.debug("execute() - With: " + parameters);
    }

    PreparedStatement ps = null;
    try {
        ps = prepareStatement(connection, sql, mode);
        boolean returnType = NamedPreparedStatement.execute(ps, parameterMap,
                setupParamMap(parameters));
        if (log.isDebugEnabled()) {
            log.debug("execute() - Return type: " + returnType);
        }
        if (returnType) {
            return processResultSet(ps.getResultSet(), (SelectMode) mode, dr);
        }
        return ps.getUpdateCount();
    }
    finally {
        HibernateHelper.cleanupDB(ps);
    }
}
 
源代码11 项目: weMessage   文件: DatabaseManager.java
public HashMap<String, Boolean> getQueuedMessages(String deviceId) throws SQLException {
    HashMap<String, Boolean> queue = new HashMap<>();
    String selectAwaitingDevicesStatementString = "SELECT * FROM " + TABLE_QUEUE + " WHERE " + COLUMN_QUEUE_MESSAGE_DEVICES_WAITING + " LIKE ?";
    PreparedStatement selectAwaitingDevicesStatement = getServerDatabaseConnection().prepareStatement(selectAwaitingDevicesStatementString);
    selectAwaitingDevicesStatement.setString(1, "%" + deviceId + "%");

    boolean isResultSet = selectAwaitingDevicesStatement.execute();

    while(true) {
        if(isResultSet) {
            ResultSet resultSet = selectAwaitingDevicesStatement.getResultSet();
            while(resultSet.next()) {
                String messageGuid = resultSet.getString(COLUMN_QUEUE_MESSAGE_GUID);
                boolean isUpdate = Boolean.parseBoolean(resultSet.getString(COLUMN_QUEUE_MESSAGE_UPDATE));
                queue.put(messageGuid, isUpdate);
            }
            resultSet.close();
        } else {
            if(selectAwaitingDevicesStatement.getUpdateCount() == -1) {
                break;
            }
        }
        isResultSet = selectAwaitingDevicesStatement.getMoreResults();
    }
    selectAwaitingDevicesStatement.close();

    return queue;
}
 
源代码12 项目: weMessage   文件: MessagesDatabase.java
public long getChatRowPositionByRowId(long rowId) throws SQLException {
    Long rowIdReturn = null;

    String selectChatStatementString = "SELECT " + COLUMN_CHAT_MESSAGE_CHAT_ID + ", MAX(" + COLUMN_CHAT_MESSAGE_MESSAGE_ID + ") FROM " + CHAT_MESSAGE_JOIN_TABLE
            + " INNER JOIN " + MESSAGE_TABLE + " ON " + CHAT_MESSAGE_JOIN_TABLE + "." + COLUMN_CHAT_MESSAGE_MESSAGE_ID + " = " + MESSAGE_TABLE + "." + COLUMN_MESSAGE_ROWID
            + " WHERE " + MESSAGE_TABLE + "." + COLUMN_MESSAGE_TEXT + " IS NOT NULL "
            + " GROUP BY " + COLUMN_CHAT_MESSAGE_CHAT_ID
            + " ORDER BY " + COLUMN_CHAT_MESSAGE_MESSAGE_ID + " DESC";

    PreparedStatement selectChatStatement = getDatabaseManager().getChatDatabaseConnection().prepareStatement(selectChatStatementString);

    boolean isResultSet = selectChatStatement.execute();
    long i = 0L;

    while(true) {
        if(isResultSet) {
            ResultSet resultSet = selectChatStatement.getResultSet();
            while(resultSet.next()) {
                long resultInt = resultSet.getLong(COLUMN_CHAT_MESSAGE_CHAT_ID);

                if (rowId == resultInt){
                    rowIdReturn = i;
                    break;
                }
                i++;
            }
            resultSet.close();
        } else {
            if(selectChatStatement.getUpdateCount() == -1) {
                break;
            }
        }
        isResultSet = selectChatStatement.getMoreResults();
    }
    selectChatStatement.close();

    return rowIdReturn;
}
 
源代码13 项目: weMessage   文件: MessagesDatabase.java
public long getChatRowPositionByGuid(String guid) throws SQLException {
    Long rowIdReturn = null;

    String selectChatStatementString = "SELECT " + CHAT_TABLE + "." + COLUMN_CHAT_GUID + ", " + COLUMN_CHAT_MESSAGE_CHAT_ID + ", MAX(" + COLUMN_CHAT_MESSAGE_MESSAGE_ID + ")"
            + " FROM " + CHAT_MESSAGE_JOIN_TABLE
            + " INNER JOIN " + CHAT_TABLE + " ON " + CHAT_MESSAGE_JOIN_TABLE + "." + COLUMN_CHAT_MESSAGE_CHAT_ID + " = " + CHAT_TABLE + "." + COLUMN_CHAT_ROWID
            + " INNER JOIN " + MESSAGE_TABLE + " ON " + CHAT_MESSAGE_JOIN_TABLE + "." + COLUMN_CHAT_MESSAGE_MESSAGE_ID + " = " + MESSAGE_TABLE + "." + COLUMN_MESSAGE_ROWID
            + " WHERE " + MESSAGE_TABLE + "." + COLUMN_MESSAGE_TEXT + " IS NOT NULL "
            + " GROUP BY " + COLUMN_CHAT_MESSAGE_CHAT_ID
            + " ORDER BY " + COLUMN_CHAT_MESSAGE_MESSAGE_ID + " DESC";

    PreparedStatement selectChatStatement = getDatabaseManager().getChatDatabaseConnection().prepareStatement(selectChatStatementString);

    boolean isResultSet = selectChatStatement.execute();
    long i = 0L;

    while(true) {
        if(isResultSet) {
            ResultSet resultSet = selectChatStatement.getResultSet();
            while(resultSet.next()) {
                String resultString = resultSet.getString(COLUMN_CHAT_GUID);

                if (resultString.equals(guid)){
                    rowIdReturn = i;
                    break;
                }
                i++;
            }
            resultSet.close();
        } else {
            if(selectChatStatement.getUpdateCount() == -1) {
                break;
            }
        }
        isResultSet = selectChatStatement.getMoreResults();
    }
    selectChatStatement.close();

    return rowIdReturn;
}
 
源代码14 项目: weMessage   文件: MessagesDatabase.java
public HashMap<Long, Long> getSortedChatsWithRow() throws SQLException {
    HashMap<Long, Long> positionRowIdPair = new HashMap<>();

    String selectChatStatementString = "SELECT " + COLUMN_CHAT_MESSAGE_CHAT_ID + ", MAX(" + COLUMN_CHAT_MESSAGE_MESSAGE_ID + ") FROM " + CHAT_MESSAGE_JOIN_TABLE
            + " INNER JOIN " + MESSAGE_TABLE + " ON " + CHAT_MESSAGE_JOIN_TABLE + "." + COLUMN_CHAT_MESSAGE_MESSAGE_ID + " = " + MESSAGE_TABLE + "." + COLUMN_MESSAGE_ROWID
            + " WHERE " + MESSAGE_TABLE + "." + COLUMN_MESSAGE_TEXT + " IS NOT NULL "
            + " GROUP BY " + COLUMN_CHAT_MESSAGE_CHAT_ID
            + " ORDER BY " + COLUMN_CHAT_MESSAGE_MESSAGE_ID + " DESC";

    PreparedStatement selectChatStatement = getDatabaseManager().getChatDatabaseConnection().prepareStatement(selectChatStatementString);

    boolean isResultSet = selectChatStatement.execute();
    long i = 0L;

    while(true) {
        if(isResultSet) {
            ResultSet resultSet = selectChatStatement.getResultSet();
            while(resultSet.next()) {
                long resultInt = resultSet.getLong(COLUMN_CHAT_MESSAGE_CHAT_ID);
                positionRowIdPair.put(i, resultInt);
                i++;
            }
            resultSet.close();
        } else {
            if(selectChatStatement.getUpdateCount() == -1) {
                break;
            }
        }
        isResultSet = selectChatStatement.getMoreResults();
    }
    selectChatStatement.close();

    return positionRowIdPair;
}
 
源代码15 项目: weMessage   文件: MessagesDatabase.java
public ChatBase getChatByGroupID(String groupID) throws SQLException {
    String selectChatStatementString = "SELECT * FROM " + CHAT_TABLE + " WHERE " + COLUMN_CHAT_GROUP_ID + " = ?";
    PreparedStatement selectChatStatement = getDatabaseManager().getChatDatabaseConnection().prepareStatement(selectChatStatementString);
    selectChatStatement.setString(1, groupID);

    ResultSet chatResultSet = selectChatStatement.executeQuery();

    if (!chatResultSet.isBeforeFirst()){
        chatResultSet.close();
        selectChatStatement.close();
        return null;
    }

    List<Handle> handles = new ArrayList<>();
    String selectChatHandleStatementString = "SELECT * FROM " + CHAT_HANDLES_TABLE + " WHERE " + COLUMN_CHAT_HANDLE_CHAT_ID + " = ?";
    PreparedStatement selectChatHandleStatement = getDatabaseManager().getChatDatabaseConnection().prepareStatement(selectChatHandleStatementString);
    selectChatHandleStatement.setLong(1, chatResultSet.getLong(COLUMN_CHAT_ROWID));

    boolean isResultSet = selectChatHandleStatement.execute();

    while(true) {
        if(isResultSet) {
            ResultSet resultSet = selectChatHandleStatement.getResultSet();
            while(resultSet.next()) {
                long resultInt = resultSet.getLong(COLUMN_CHAT_HANDLE_HANDLE_ID);
                handles.add(getHandleByRow(resultInt));
            }
            resultSet.close();
        } else {
            if(selectChatHandleStatement.getUpdateCount() == -1) {
                break;
            }
        }
        isResultSet = selectChatHandleStatement.getMoreResults();
    }

    ChatBase chat = buildChat(chatResultSet, handles);

    chatResultSet.close();
    selectChatStatement.close();
    selectChatHandleStatement.close();

    return chat;
}
 
源代码16 项目: sagacity-sqltoy   文件: SqlServerDialectUtils.java
/**
 * @todo 针对sqlserver timestamp不能保存情况,提供特殊的批量执行方式,跳过类型为timestamp的值
 * @param updateSql
 * @param rowDatas
 * @param batchSize
 * @param updateTypes
 * @param autoCommit
 * @param conn
 * @param dbType
 * @return
 * @throws Exception
 */
private static Long batchUpdateByJdbc(final String updateSql, final List<Object[]> rowDatas, final int batchSize,
		final Integer[] updateTypes, final Boolean autoCommit, final Connection conn, final Integer dbType)
		throws Exception {
	if (rowDatas == null) {
		logger.error("batchUpdateByJdbc:{} 传递的数据为空!", updateSql);
		return 0L;
	}
	PreparedStatement pst = null;
	long updateCount = 0;
	try {
		boolean hasSetAutoCommit = false;
		// 是否自动提交
		if (autoCommit != null && !autoCommit == conn.getAutoCommit()) {
			conn.setAutoCommit(autoCommit);
			hasSetAutoCommit = true;
		}
		pst = conn.prepareStatement(updateSql);
		int totalRows = rowDatas.size();
		boolean useBatch = (totalRows > 1) ? true : false;
		Object[] rowData;
		// 批处理计数器
		int meter = 0;
		int pstIndex = 0;
		for (int i = 0; i < totalRows; i++) {
			rowData = rowDatas.get(i);
			if (rowData != null) {
				// 使用对象properties方式传值
				pstIndex = 0;
				for (int j = 0, n = rowData.length; j < n; j++) {
					// 类型为timestamp 则跳过
					if (!updateTypes[j].equals(java.sql.Types.TIMESTAMP)) {
						SqlUtil.setParamValue(conn, dbType, pst, rowData[j], updateTypes[j], pstIndex + 1);
						pstIndex++;
					}
				}
				meter++;
				if (useBatch) {
					pst.addBatch();
					if ((meter % batchSize) == 0 || i + 1 == totalRows) {
						int[] updateRows = pst.executeBatch();
						for (int t : updateRows) {
							updateCount = updateCount + ((t > 0) ? t : 0);
						}
						pst.clearBatch();
					}
				} else {
					pst.execute();
					updateCount = updateCount + ((pst.getUpdateCount() > 0) ? pst.getUpdateCount() : 0);
				}
			}
		}
		if (hasSetAutoCommit) {
			conn.setAutoCommit(!autoCommit);
		}
	} catch (Exception e) {
		logger.error(e.getMessage(), e);
		e.printStackTrace();
		throw e;
	} finally {
		try {
			if (pst != null) {
				pst.close();
				pst = null;
			}
		} catch (SQLException se) {
			logger.error(se.getMessage(), se);
			se.printStackTrace();
		}
	}
	return updateCount;
}
 
源代码17 项目: openbd-core   文件: cfSQLQueryData.java
private void executeAsPreparedStatement() throws cfmRunTimeException {
	Connection dataConnection = null;
	PreparedStatement stmt = null;
	ResultSet rs = null;

	try {
		dataConnection = setupDataConnection();
		stmt = prepareStatement(dataConnection);
		boolean oracleDriver = stmt.getClass().getName().equals("oracle.jdbc.driver.OraclePreparedStatement");

		if (!oracleDriver) {
			// the Oracle JDBC driver has a bug: stmt.getUpdateCount() always
			// returns a positive number, instead of -1 when there are no more
			// results; this bug puts the following code into an infinite loop
			stmt.execute();

			// With MySQL we need to retrieve the generated keys before
			// stmt.getMoreResults() and stmt.getUpdateCount() are called.
			ResultSet rsGK = initGeneratedKeys(dataConnection, stmt);
			recordsUpdated = 0;
			
			do { // there may be multiple result sets and/or update counts
				rs = stmt.getResultSet();
				if (rs != null && rs != rsGK ) { // return the first result set (if any). Also need to check it isn't the generated keys ResultSet which SQL Server returns here too
					resultSet = true;
					populate(rs, maxRows);
					rs.close();
					break;
				}
				recordsUpdated += stmt.getUpdateCount();
			} while (stmt.getMoreResults() || (stmt.getUpdateCount() >= 0));

		} else {
			// this is the workaround for the Oracle bug mentioned above
			if (stmt.execute()) { // Oracle only returns a single result
				rs = stmt.getResultSet();
				if (rs != null) {
					resultSet = true;
					populate(rs, maxRows);
				}
			}
			initGeneratedKeys(dataConnection, stmt);
		}
	} catch (SQLException e) {
		throw new cfmRunTimeException(catchDataFactory.databaseException(dataSourceName, "sql.execution", new String[] { com.naryx.tagfusion.cfm.tag.tagUtils.trimError(e.getMessage()) }, queryString, e));
	} finally {
		queryRun = true;
		closeConnections(dataConnection, stmt, rs);
	}
}
 
源代码18 项目: DKO   文件: DBQuery.java
@Override
public int update() throws SQLException {
	final SqlContext context = new SqlContext(this);
	if (data==null || data.size()==0) return 0;
	final DataSource ds = getDataSource();
	this.tableInfos.get(0).tableName = null;
	final String sep = getDBType()==DB_TYPE.SQLSERVER ? ".dbo." : ".";
	final StringBuffer sb = new StringBuffer();
	sb.append("update ");
	String schema = Util.getSchemaName(ofType);
	if (schema!=null && !"".equals(schema)) {
		schema = Context.getSchemaToUse(ds, schema);
		if (schema!=null && !"".equals(schema)) {
			sb.append(schema).append(sep);
		}
	}
	sb.append(Util.getTableName(ofType));
	sb.append(" set ");
	final String[] fields = new String[data.size()];
	final List<Object> bindings = new ArrayList<Object>();
	int i=0;
	for (final Entry<Field<?>, Object> entry : data.entrySet()) {
		final Field<?> field = entry.getKey();
		final Object other = entry.getValue();
		if (other instanceof Field) {
			fields[i++] = field.getSQL(context)+"="+((Field)other).getSQL(context);
			bindings.add(other);
		} else if (other instanceof SQLFunction) {
			final StringBuffer sb2 = new StringBuffer();
			sb2.append(field.getSQL(context)).append("=");
			((SQLFunction)other).__getSQL(sb2, bindings, context);
			fields[i++] = sb2.toString();
		} else {
			fields[i++] = field.getSQL(context)+"=?";
			bindings.add(other);
		}
	}
	sb.append(Util.join(", ", fields));
	sb.append(" ");
	initTableNameMap(false);
	final Tuple2<String, List<Object>> wcab = getWhereClauseAndBindings(context);
	sb.append(wcab.a);
	bindings.addAll(wcab.b);
	final String sql = sb.toString();

	Util.log(sql, bindings);
	final Tuple2<Connection,Boolean> info = getConnRW(ds);
	final Connection conn = info.a;
	try {
		final PreparedStatement ps = createPS(sql, conn);
		setBindings(ps, bindings);
		_preExecute(context, conn);
		ps.execute();
		final int count = ps.getUpdateCount();
		ps.close();
		_postExecute(context, conn);
		return count;
	} finally {
		if (info.b) {
			if (!conn.getAutoCommit()) conn.commit();
			conn.close();
		}
	}
}
 
源代码19 项目: geopackage-java   文件: SQLExec.java
/**
 * Execute the query against the database
 * 
 * @param database
 *            open database
 * @param sql
 *            SQL statement
 * @param maxRows
 *            max rows
 * @return results
 * @throws SQLException
 *             upon SQL error
 */
private static SQLExecResult executeQuery(GeoPackage database, String sql,
		int maxRows) throws SQLException {

	SQLExecResult result = new SQLExecResult();

	if (!sql.equals(";")) {

		PreparedStatement statement = null;
		try {

			statement = database.getConnection().getConnection()
					.prepareStatement(sql);
			statement.setMaxRows(maxRows);

			result.setMaxRows(maxRows);

			boolean hasResultSet = statement.execute();

			if (hasResultSet) {

				ResultSet resultSet = statement.getResultSet();

				ResultSetMetaData metadata = resultSet.getMetaData();
				int numColumns = metadata.getColumnCount();

				int[] columnWidths = new int[numColumns];
				int[] columnTypes = new int[numColumns];

				for (int col = 1; col <= numColumns; col++) {
					result.addTable(metadata.getTableName(col));
					String columnName = metadata.getColumnName(col);
					result.addColumn(columnName);
					columnTypes[col - 1] = metadata.getColumnType(col);
					columnWidths[col - 1] = columnName.length();
				}

				while (resultSet.next()) {

					List<String> row = new ArrayList<>();
					result.addRow(row);
					for (int col = 1; col <= numColumns; col++) {

						String stringValue = resultSet.getString(col);

						if (stringValue != null) {

							switch (columnTypes[col - 1]) {
							case Types.BLOB:
								stringValue = BLOB_DISPLAY_VALUE;
								break;
							default:
								stringValue = stringValue.replaceAll(
										"\\s*[\\r\\n]+\\s*", " ");
							}

							int valueLength = stringValue.length();
							if (valueLength > columnWidths[col - 1]) {
								columnWidths[col - 1] = valueLength;
							}

						}

						row.add(stringValue);
					}

				}

				result.addColumnWidths(columnWidths);

			} else {

				int updateCount = statement.getUpdateCount();
				if (updateCount >= 0) {
					result.setUpdateCount(updateCount);
				}

			}

		} finally {
			SQLUtils.closeStatement(statement, sql);
		}
	}

	return result;
}
 
源代码20 项目: weMessage   文件: MessagesDatabase.java
public ChatBase getChatByRow(long rowID) throws SQLException {
    String selectChatStatementString = "SELECT * FROM " + CHAT_TABLE + " WHERE " + COLUMN_CHAT_ROWID + " = ?";
    PreparedStatement selectChatStatement = getDatabaseManager().getChatDatabaseConnection().prepareStatement(selectChatStatementString);
    selectChatStatement.setLong(1, rowID);

    ResultSet chatResultSet = selectChatStatement.executeQuery();

    if (!chatResultSet.isBeforeFirst()){
        chatResultSet.close();
        selectChatStatement.close();
        return null;
    }

    List<Handle> handles = new ArrayList<>();
    String selectChatHandleStatementString = "SELECT * FROM " + CHAT_HANDLES_TABLE + " WHERE " + COLUMN_CHAT_HANDLE_CHAT_ID + " = ?";
    PreparedStatement selectChatHandleStatement = getDatabaseManager().getChatDatabaseConnection().prepareStatement(selectChatHandleStatementString);
    selectChatHandleStatement.setLong(1, rowID);

    boolean isResultSet = selectChatHandleStatement.execute();

    while(true) {
        if(isResultSet) {
            ResultSet resultSet = selectChatHandleStatement.getResultSet();
            while(resultSet.next()) {
                long resultInt = resultSet.getLong(COLUMN_CHAT_HANDLE_HANDLE_ID);
                handles.add(getHandleByRow(resultInt));
            }
            resultSet.close();
        } else {
            if(selectChatHandleStatement.getUpdateCount() == -1) {
                break;
            }
        }
        isResultSet = selectChatHandleStatement.getMoreResults();
    }

    ChatBase chat = buildChat(chatResultSet, handles);

    chatResultSet.close();
    selectChatStatement.close();
    selectChatHandleStatement.close();

    return chat;
}